Strudelify

Space Junk Galaxy

Mahito Yokota

KeyA♭ majorTempo114 bpm
0:00/0:00
// Space Junk Galaxy — Mahito Yokota
// 114 bpm, 3/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Sym. Cello Sec. Sus." named as a string part, played on cello (its celesta patch is not one); ch 6 "Sym. Basses Sus." named as a bass, played on electric bass finger (its music box patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/4169976; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(114/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 · piano · "Gen. Stereo Grand"
const piano = note(`<
  ~@4 A@2 B@2 A@2 C@2 A@2 B@2 D@2 C@2 E@2 F@2 E@2 G@2 E@2 F@2 H@2 I@2 ~@16 J@4 K@8 ~@2 A@2 B@2 A@2 C@2 A@2 B@2 D@2 C@2
  E@2 F@2 E@2 G@2 E@2 F@2 H@2 I@2 ~@16 J@4 K@8
>`.pickRestart({
  A: "[~@27 bb4@2 ab4@3, ~@5 eb4@24 ~@3, ~@11 eb5@19 ~@2, ~@16 d5@13 ~@3, ~@24 c5@5 ~@3]/2", B: "[~ eb4, c5]/2",
  C: "[c5@15 ~]/2", D: "[~@27 bb4@2 db5@3, ~@5 eb4@24 ~@3, ~@11 eb5@19 ~@2, ~@16 db5@13 ~@3, ~@24 c5@5 ~@3]/2",
  E: "[~@27 bb5@2 ab5@3, ~@5 eb5@24 ~@3, ~@11 eb6@19 ~@2, ~@16 d6@13 ~@3, ~@24 c6@5 ~@3]/2", F: "[~ eb5, c6]/2",
  G: "[c6@15 ~]/2",
  H: "[~@27 [gb5,bb5]@2 [bb5,db6]@3, ~@5 [b4,eb5]@24 ~@3, ~@11 [b5,eb6]@19 ~@2, ~@16 db6@13 ~@3, ~@16 bb5@8 [ab5,c6]@5 ~@3]/2", // Gb Bbm B Ab
  I: "[[ab5,c6]@15 ~]/2", // Ab
  J: "[~@5 ab5@5 ~@38 [bb4,bb5]@16, ~@5 ab4@22 [eb5,eb6]@2 [db5,db6]@32 ~@3, ~@11 [ab5,ab6]@21 [eb5,eb6]@32, ~ [g5,g6]@2 ~, ~@3 [f5,f6]@4 ~]/4", // Bb Eb Db Ab Eb G F
  K: "[~@5 ab5@5 ~@55 [d6,g6]@4 ~@22 [bb4,d5,g5]@36 ~, ~@5 ab4@19 f6@19 g5@26 d6 g6@5 [bb5,d6] g6@32 ~@20, ~@11 [ab5,ab6]@13 f5@3 [eb5,eb6]@2 [db5,db6]@19 bb5@5 eb6@27 g5 d6@32 ~@15, ~@16 g6@16 eb6@5 f5@27 bb5@7 bb6@32 ~@25, ~@16 g5@16 eb5@27 f6@22 bb5@4 d5 g5 bb5@32 ~@9]/8", // G5 Gm Bb Ab Eb Db
})).s("gm_piano").gain(0.49)

// chords · piano · "Gen. Stereo Grand"
const piano_2 = note(`<
  A@4 B@6 C@2 B@4 D E B F B@6 C@2 B@4 D E B F ~@15 G H@2 I@2 H@2 I@2 J@2 A@4 B@6 C@2 B@4 D E B F B@6 C@2 B@4 D E B F
  ~@15 G H@2 I@2 H@2 I@2 J@2 ~@2
>`.pickRestart({
  A: "~@13 g4@3, ab2@11 d4@5, ~@3 eb3@13, ~@5 ab3@11, ~ c4",
  B: "~@13 eb4@3, ab2@11 c4@5, ~@3 eb3@13, ~@5 ab3@11, ~ bb3",
  C: "~@13 eb4@3, gb2@11 c4@5, ~@3 eb3@13, ~@5 ab3@11, ~ bb3", D: "~@13 b3@3, e2@11 ab3@5, ~@3 b2@13, ~@5 e3@11, ~ gb3",
  E: "~@13 db4@3, gb2@11 bb3@5, ~@3 db3@13, ~@5 gb3@11, ~ ab3",
  F: "~@13 g3@3, ab4@11 ab3@5, ~@3 g4@13, ~@5 eb4@11, ~ c4", G: "~@13 bb3@3, ~@3 ab4@13, ~@5 gb4@11, ~ eb4, ~@11 db4@5",
  H: "~@13 db5@3, db3@11 ab4@5, ~@3 ab3@13, ~@5 eb4@11, ~ f4",
  I: "~@13 bb4@3, eb3@11 g4@5, ~@3 bb3@13, ~@5 eb4@11, ~ f4", J: "eb5/2",
})).s("gm_piano").gain(0.3)

// bass · cello · "Sym. Cello Sec. Sus."
const bass = note(`<
  A@16 B C A ~ A@12 B C A ~@17 D@2 E@2 D@2 E@2 ~@2 A@16 B C A ~ A@12 B C A ~@17 D@2 E@2 D@2 E@2 ~@4
>`.pickRestart({
  A: "eb2@13 ~@3", B: "b1@13 ~@3", C: "db2@13 ~@3", D: "db3 ~", E: "eb3 ~",
})).s("gm_cello").gain(0.25)

// bass · electric bass finger · "Sym. Basses Sus."
const bass_2 = note(`<
  A@10 B@2 A@4 C B A ~ A@6 B@2 A@4 C B A ~@27 A@10 B@2 A@4 C B A ~ A@6 B@2 A@4 C B A ~@29
>`.pickRestart({
  A: "ab1@13 ~@3", B: "gb1@13 ~@3", C: "e1@13 ~@3",
})).s("gm_electric_bass_finger").gain(0.25)

// chords · whistle · "Gen. Whistlin'"
const whistle = note(`<
  ~@4 A B C D A B E@2 A B C D A F G H A B C D A B E@2 A B C D A F C I J K J K L M L M J@4 L@3 N ~@2 O P ~@2 O Q R ~@5 A
  B C D A B E@2 A B C D A F G H A B C D A B E@2 A B C D A F C I J K J K L M L M J@4 L@3 N ~@2 O P ~@2 O Q R ~@3
>`.pickRestart({
  A: "~@5 eb4@5 ~ eb5@5", B: "d5@8 c5@3 bb4@2 ab4@3", C: "c5", D: "eb4", E: "c5/2", F: "db5@8 c5@3 bb4@2 db5@3",
  G: "c5@5 eb4@5 ~ ab4@5", H: "bb4@5 c5@5 ~ d5@5",
  I: "[c5,c6]@3 [bb4,bb5]@2 [ab4,ab5]@3 [eb4,eb5]@3 [c4,c5]@2 [bb3,bb4]@3", // C Bb Ab Eb C Bb
  J: "a3@3 [e4,e5]@2 [gb4,gb5]@3 [ab4,ab5]@3 [gb4,gb5]@2 [e4,e5]@3, a4", // E Gb Ab Gb E
  K: "[a3,a4]@3 [e4,e5]@2 [gb4,gb5]@3 [ab4,ab5]@3 [gb4,gb5]@2 [e4,e5]@3", // A E Gb Ab Gb E
  L: "b3@3 [gb4,gb5]@2 [ab4,ab5]@3 [bb4,bb5]@3 [ab4,ab5]@2 [gb4,gb5]@3, b4", // Gb Ab Bb Ab Gb
  M: "[b3,b4]@3 [gb4,gb5]@2 [ab4,ab5]@3 [bb4,bb5]@3 [ab4,ab5]@2 [gb4,gb5]@3", // B Gb Ab Bb Ab Gb
  N: "ab3@3 [eb4,eb5]@2 [gb4,gb5]@3 [eb4,eb5]@3 [gb4,gb5]@2 [eb4,eb5]@3, ab4", O: "~@5 [g4,bb4]@5 ~ [bb4,eb5]@5",
  P: "[eb5,g5]@5 [eb5,g5]@8 ~@3", Q: "[eb5,f5]@5 [eb5,g5]@5 ~ [g5,bb5]@5", R: "~ [bb5,d6]@15, g5",
})).s("gm_whistle").gain(0.21)

// chords · epiano1 · "Gen. Tine Electric Piano"
const epiano1 = note("<~@36 A B C D E F G H A B C D E F G I ~@46 A B C D E F G H A B C D E F G I ~@12>".pickRestart({
  A: "[db5,ab5] ~@2 [db5,ab5] ~ [db5,ab5] ~@10", B: "~@5 [ab5,db6]@8 [gb5,b5] ~@2",
  C: "[ab5,db6] ~@2 [ab5,db6] ~ [ab5,db6] ~@10", D: "~@5 [b5,e6]@8 [bb5,eb6] ~@2",
  E: "[gb5,b5] ~@2 [gb5,b5] ~ [gb5,b5] ~@10", F: "~@5 [db6,gb6]@8 [b5,e6] ~@2",
  G: "[bb5,eb6] ~@2 [bb5,eb6] ~ [bb5,eb6] ~@10", H: "[eb5,ab5]@11 [db5,gb5]@5",
  I: "~@7 db6@4 ~ bb5@4, ~@5 gb5@5 ~ [eb5,gb5]@5, ~@6 bb5@5 ~@5", // Ebm
})).s("gm_epiano1").gain(0.64)

stack(piano, piano_2, bass, bass_2, whistle, epiano1)

More by Mahito Yokota