Strudelify

The Last Array

Michael Salvatori

KeyG majorTempo135 bpm
0:00/0:00
// The Last Array — Michael Salvatori
// 135 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 74, 4/4 at bar 75) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/3920286; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · trombone
const trombone = note(`<
  A@2 B@2 A@2 B@2 C@2 D@2 C@2 D@2 E F G H E I B@2 E F J K I L@3 M N O P Q R S ~@14 E T@6 U@4 V@2 W@2 M N O P Q R X Y Z
  AA AB AC AD AE@2
>`.pickRestart({
  A: "[f#3@4 f#3@3 e3 f#3 e3 f#3@2 ~@2 f#3@4 f#3@4 f#3@4 ~@6]/2",
  B: "[f#3@4 f#3@3 e3 f#3 e3 f#3@2 ~@2 f#3@4 f#3@4 f#3@4 a3@2 g#3@2 e3@2]/2",
  C: "[c#4@4 c#4@3 b3 c#4 b3 c#4@2 ~@2 c#4@4 c#4@4 c#4@4 d4@2 c#4@2 b3@2]/2",
  D: "[c4@4 c4@3 b3 c4 b3 c4@2 ~@2 c4@4 c4@4 c4@4 d4@2 c#4@2 b3@2]/2", E: "f#2", F: "f#2@7 c#3", G: "e3", H: "d#3 b2",
  I: "c#3", J: "f3", K: "e3@3 d3", L: "[f#2@5 f#2 a2@16 ~@2]/3", M: "f#3!4 ~@2 e3!2", N: "e3!2 ~@4 a3!2",
  O: "a3!2 ~ a3 ~ a3 ~ a3", P: "g#3 e3 f#3!4 ~@2", Q: "e3!4 ~@4", R: "b3!4 ~ b3 ~ b3", S: "~ b3 a3 e3 f#3@2 ~@2",
  T: "[c#3@5 c#3 c3@12 ~@4 f#2@8 c#3@5 c#3 f3@12]/6", U: "[~@4 c#3@8 f#3@5 f#3 a3@12 ~@2]/4", V: "[~@2 e3@8 a3@5 a3]/2",
  W: "c4/2", X: "~ b3 a3 e3 f#3!4", Y: "~@2 e3!4 ~@2", Z: "~@2 a3!4 ~ a3", AA: "~ a3 ~ a3 g#3 e3 f#3!2",
  AB: "f#3!2 ~@2 e3!4", AC: "~@4 b3!4", AD: "~ b3 ~ b3 ~ b3 a3 e3", AE: "[f#3@3 ~]/2",
})).s("gm_trombone").gain(0.4)

// bass · trombone · "Bass Trombone"
const bass = note(`<
  A@2 B@2 A@2 B@2 C@2 D@2 C@2 D@2 E F G H E I B@2 E F J K I L@3 M N O P Q R S ~@14 E T@6 U@4 V@2 W@2 M N O P Q R X Y Z
  AA AB AC AD AE@2
>`.pickRestart({
  A: "[f#2@4 f#2@3 e2 f#2 e2 f#2@2 ~@2 f#2@4 f#2@4 f#2@4 ~@6]/2",
  B: "[f#2@4 f#2@3 e2 f#2 e2 f#2@2 ~@2 f#2@4 f#2@4 f#2@4 a2@2 g#2@2 e2@2]/2", C: "c#3/2", D: "c3/2", E: "a1",
  F: "a1@7 e2", G: "b2", H: "f#2 e2", I: "e2", J: "c3", K: "g2@3 f2", L: "[a1@5 a1 a2@16 ~@2]/3", M: "f#2!4 ~@2 e2!2",
  N: "e2!2 ~@4 a2!2", O: "a2!2 ~ a2 ~ a2 ~ a2", P: "g#2 e2 f#2!4 ~@2", Q: "e2!4 ~@4", R: "b2!4 ~ b2 ~ b2",
  S: "~ b2 a2 e2 f#2@2 ~@2", T: "[e2@5 e2 d#2@12 ~@4 a1@8 e2@5 e2 g2@12]/6", U: "[~@4 e2@8 a2@5 a2 c3@12 ~@2]/4",
  V: "[~@2 g2@8 c3@5 c3]/2", W: "e3/2", X: "~ b2 a2 e2 f#2!4", Y: "~@2 e2!4 ~@2", Z: "~@2 a2!4 ~ a2",
  AA: "~ a2 ~ a2 g#2 e2 f#2!2", AB: "f#2!2 ~@2 e2!4", AC: "~@4 b2!4", AD: "~ b2 ~ b2 ~ b2 a2 e2", AE: "[f#2@3 ~]/2",
})).s("gm_trombone").gain(0.3)

stack(trombone, bass)

More by Michael Salvatori