Strudelify

Hopes and Dreams

Toby Fox

KeyF majorTempo170 bpm
0:00/0:00
// Hopes and Dreams — Toby Fox
// 170 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3002596; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/4)

// 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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B C D E F G H A B C D E F I J ~@16 K L M N K L M N K L M N K L M N K O P@2 K O P@2 Q R S@2 Q R S@2 ~@32 T@2 U@2 T@2
  V W ~@8 X@4 Y@2 ~@2
>`.pickRestart({
  A: "f4 ~@7 f5 ~@7", B: "c5 ~@15", C: "bb4 ~@7 f5 ~@7", D: "f4 ~@15", E: "f4 ~@7 a4 ~@7", F: "a5 ~@11 bb5 ~@3",
  G: "a5 ~@7 f5 ~@7", H: "d5 ~@15", I: "a5 ~@3 f5 ~@3", J: "d5 ~@7", K: "c5 f4 g4 f4", L: "c4 f4 g4 f4",
  M: "c4@2 c4 f4 g4@2 bb4@2", N: "a4@2 bb4@2 a4 g4 f4@2", O: "c4@2 f4@4 g4@4 a4 g4 f4@4",
  P: "[c4@4 f4@4 g4@2 bb4@4 a4@4 bb4 a4 g4@4 f4@4 c4@4]/2", Q: "f5 bb4 c5 bb4", R: "f4@2 bb4@4 c5@4 d5 c5 bb4@4",
  S: "[f4@4 bb4@4 c5@2 eb5@4 d5@4 eb5 d5 c5@4 bb4@4 f4@4]/2", T: "gb4/2", U: "[gb4@6 db5 eb5]/2", V: "gb4@3 ab4",
  W: "ab4 eb4 db4 b3",
  X: "[eb4@2 eb4@2 eb4 eb4@2 eb4@2 eb4 db4@2 b3@2 ab3@4 eb4@2 eb4 eb4@2 eb4@2 eb4 db4@2 eb4@2 gb4@2]/4",
  Y: "[eb4@6 eb5 b4]/2",
})).s("gm_trumpet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B A B C D E F A B A B C D G F H I J K L M N O H I J K L M N O P@2 Q@2 R@2 S T P@2 Q@2 R@2 S ~@17 U V W X U V W X U V
  W X U V W X ~@16 Y@2 Z@2 Y@2 AA@2 ~@11 AB AC@2 ~@2
>`.pickRestart({
  A: "f4 ~ f4@2 ~@2 f4 ~ f4 ~ f4@2 ~@2 f4 ~", B: "f4 ~ f4@2 ~@2 f4 ~ f4 ~ f4 ~ f4 ~ g4 ~",
  C: "d4 ~ d4@2 ~@2 d4 ~ d4 ~ d4@2 ~@2 d4 ~", D: "d4 ~ d4@2 ~@2 d4 ~ d4 ~ d4 ~ d4 ~@3",
  E: "eb4 ~ eb4@2 ~@2 eb4 ~ f4 ~ f4@2 ~@2 f4 ~", F: "bb3 ~ bb4 ~ a4 ~ f4 ~ d4 ~ c4 ~ bb3 ~ f3 ~", G: "g3 ~@3 f3 ~@3",
  H: "f3 f4", I: "c4", J: "bb3 f4", K: "f3", L: "f3 a3", M: "a4@3 bb4", N: "a4 f4", O: "d4", P: "eb4@2 eb4@2 ~ eb4@3",
  Q: "f4@2 f4@2 ~ f4@3", R: "g4@2 g4@2 ~ g4@3", S: "a4@2 a4@2 ~ a4@3", T: "bb4@2 bb4@2 ~ bb4@3",
  U: "bb3@2 bb3 c4 d4@2 bb3@2", V: "c4@2 c4 d4 c4@2 bb3@2", W: "d4@2 d4 eb4 f4@2 bb4@2", X: "g4 f4",
  Y: "[~@2 gb4@2 gb4 gb4@2 gb4@2 gb4 e4@2 eb4@2 e4@2]/2", Z: "[gb4@4 b4@3 b3@9]/2", AA: "[gb4 db4 bb3 b3@5]/2",
  AB: "~ db3 eb3 gb3", AC: "[ab3@6 gb4 eb4]/2",
})).s("gm_alto_sax").gain(0.3)

// other · trombone
const trombone = note(`<
  A B A B C D E F A B A B C D G F H I J K L M N O H I J K L M N O P@2 Q@2 R@2 S T P@2 Q@2 R@2 S ~@9 U V W X U V W X U V
  W X U V W X U V W X U V W X ~@16 Y@2 Z@2 Y@2 AA@2 AB@2 AC@2 AB@2 AD@2 AE@4 AF@2 AG@2
>`.pickRestart({
  A: "bb3 ~ bb3@2 ~@2 bb3 ~ bb3 ~ bb3@2 ~@2 bb3 ~", B: "bb3 ~ bb3@2 ~@2 bb3 ~ bb3 ~ bb3 ~ bb3 ~ c4 ~",
  C: "a3 ~ a3@2 ~@2 a3 ~ a3 ~ a3@2 ~@2 a3 ~", D: "a3 ~ a3@2 ~@2 a3 ~ a3 ~ a3 ~ a3 ~@3",
  E: "g3 ~ g3@2 ~@2 g3 ~ a3 ~ a3@2 ~@2 a3 ~", F: "bb2 ~ bb3 ~ a3 ~ f3 ~ d3 ~ c3 ~ bb2 ~ f2 ~", G: "d3 ~@3 c3 ~@3",
  H: "f2 f3", I: "c3", J: "bb2 f3", K: "f2", L: "f2 a2", M: "a3@3 bb3", N: "a3 f3", O: "d3", P: "c3@2 c3@2 ~ c3@3",
  Q: "d3@2 d3@2 ~ d3@3", R: "eb3@2 eb3@2 ~ eb3@3", S: "f3@2 f3@2 ~ f3@3", T: "g3@2 g3@2 ~ g3@3",
  U: "bb2@2 bb2 c3 d3@2 bb2@2", V: "c3@2 c3 d3 c3@2 bb2@2", W: "d3@2 d3 eb3 f3@2 bb3@2", X: "g3 f3",
  Y: "[~@2 bb3@2 bb3 bb3@2 bb3@2 bb3 ab3@2 gb3@2 ab3@2]/2", Z: "[b3@4 eb4@3 b3@5 db4@2 eb4@2]/2",
  AA: "[bb3 gb3 eb3 ab3@2 eb3 db3 b2]/2", AB: "[~@2 bb2@2 bb2 bb2@2 bb2@2 bb2 ab2@2 gb2@2 ab2@2]/2",
  AC: "[b2@4 eb3@3 b2@5 db3@2 eb3@2]/2", AD: "[db3 eb3 db3 b2@5]/2",
  AE: "[b2@2 b2@2 b2 b2@2 b2@2 b2 bb2@2 ab2@2 e2@4 bb2@2 bb2 bb2@2 bb2@2 bb2 ab2@2 bb2@2 db3@2]/4",
  AF: "[eb3@6 eb3 b2]/2", AG: "db3/2",
})).s("gm_trombone").gain(0.3)

// other · marimba
const marimba = note(`<
  ~@16 A B A B C D E F A B A B C D E F ~@16 G@2 H@2 I@2 J K G@2 H@2 I@2 J K G@2 H@2 I@2 J K G@2 H@2 I@2 J K L@2 I@2 M@2
  N O L@2 I@2 M@2 N O P@2 Q@2 P@2 R@2 I@2 M@2 I@2 S O T@2 U V M@2 ~@2
>`.pickRestart({
  A: "[eb3,eb4] eb3 bb3 [eb3,eb4] eb3!2 [bb3,eb4] eb3", B: "eb3 [eb3,eb4] bb3 eb3 [eb3,eb4] eb3 [bb3,eb4] eb3",
  C: "[d3,d4] d3 a3 [d3,d4] d3!2 [a3,d4] d3", D: "d3 [d3,d4] a3 d3 [d3,d4] d3 [a3,d4] d3",
  E: "[g3,g4] g3 d4 g3 [a3,a4] a3 f4 a3", F: "[bb3,bb4] bb3 bb4 bb3 c4 bb3 c4 d4", G: "c3!2 c4 c3!2 c4 c3 c4",
  H: "d3!2 d4 d3!2 d4 d3 d4", I: "eb3!2 eb4 eb3!2 eb4 eb3 eb4", J: "f3!2 f4 f3!2 f4 f3 f4", K: "g3!2 g4 g3!2 g4 g3 g4",
  L: "db3!2 db4 db3!2 db4 db3 db4", M: "e3!2 e4 e3!2 e4 e3 e4", N: "gb3!2 gb4 gb3!2 gb4 gb3 gb4",
  O: "ab3!2 ab4 ab3!2 ab4 ab3 ab4", P: "[eb3,gb3]/2", Q: "[e3,ab3]/2", R: "[[gb3,bb3]@3 [ab3,b3]@5]/2",
  S: "gb3!2 gb4 gb3!2 gb4 ab3 ab4", T: "db3/2", U: "eb3", V: "eb3!2 eb3@2 eb3 eb3@2 eb3",
})).s("gm_marimba").gain(0.3)

stack(trumpet, alto_sax, trombone, marimba)

More by Toby Fox