Strudelify

Deus Ex Machina II Train of tears

Terrence Wilson

KeyB♭ majorTempo94 bpm
0:00/0:00
// Deus Ex Machina II Train of tears — Terrence Wilson
// 94 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (3/4 at bar 1, 2/4 at bar 4, 3/4 at bar 5, 2/4 at bar 8, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 6 "F Mellophone" french horn (copy of ch 5 "F Mellophone" french horn); ch 8 "Baritone Horn" french horn (copy of ch 7 "Baritone Horn" french horn); ch 11 "Baritone Horn" french horn (copy of ch 9 "Baritone Horn" french horn); ch 13 "Bb Tuba" tuba (copy of ch 12 "Bb Tuba" tuba); ch 14 "Bb Tuba" tuba (copy of ch 12 "Bb Tuba" tuba)
// note: Transcription provider: pdmx. https://musescore.com/score/57573; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 37 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(94/3)

// 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 · "Bb Trumpet"
const trumpet = note("<~@14 A B C@3 ~@2 D@8 E F@7>".pickRestart({
  A: "[eb4,eb5]", B: "[g4,g5]", C: "[[bb4,bb5]@4 [g4,g5]@4 [eb4,eb5]@5 ~@5]/3",
  D: "[~@16 bb4@24 eb5@25 bb5@54 bb4@71 bb4@2]/8", E: "~@7 eb5@9 f5@8", F: "[~ f5@27 f5@27 f5@36 f5@72 ~@5]/7",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note("<~@13 A@2 B@2 C ~@4 D@2 E@6 F@7>".pickRestart({
  A: "[~@2 c4@2 g4@5 g4 ab4 g4]/2", B: "[bb4 ab4 g4@2 f4@2]/2", C: "f4", D: "[~@16 eb4@25 bb4@7]/2",
  E: "[~@2 f5@18 bb4@9 eb5@18 f4@71 bb4@9 eb5@9 f5@8]/6", F: "[~ [bb4,f5]@27 [c5,f5]@27 [c5,f5]@36 [d5,f5]@72 ~@5]/7",
})).s("gm_trumpet").gain(0.3)

// chords · french horn · "F Mellophone"
const french_horn = note("<~ A@2 B@2 C@2 D E F G@2 H I@2 J@2 K L M N@2 O@5 P@4 Q@6>".pickRestart({
  A: "[g4 ab4 c4@3 ~]/2", B: "[g4@8 f4@5 g4 ab4 bb4 c5@16 ~@4 f4@4 g4@4 f4@4]/2", C: "[ab4@2 c4@6 ~ f4 g4 f4]/2",
  D: "ab4 f4@2", E: "~ [eb4,g4] [db4,f4]", F: "[f4,ab4]@5 [eb4,g4]",
  G: "[[c4,eb4]@2 [db4,f4]@2 [db4,f4]@10 [c4,eb4]@2 [f4,ab4]@4 [eb4,g4]@2 [f4,ab4] [eb4,g4]]/2", H: "[c4,eb4]",
  I: "[~@2 c4@2 g4@5 g4 ab4 g4]/2", J: "[bb4 ab4 g4@2 f4@2]/2", K: "eb4 c5 bb4@4",
  L: "~ [bb3,eb4]!2 [c4,f4]!2 [db4,g4]", M: "[db4,g4] [eb4,ab4] [eb4,ab4]@2 ~ [bb3,f4]",
  N: "[[bb3,f4] [c4,g4]!2 [db4,ab4] [eb4,bb4]@4 [db4,ab4] [c4,g4] [db4,ab4] [eb4,bb4]]/2", // Bb5 C5 Db5 Eb5 Db5 C5 Db5 Eb5
  O: "[[eb4,bb4]@41 f4@54 bb3@9 f4@16]/5", P: "[~@2 bb3@8 eb4@9 [bb3,f4]@77]/4",
  Q: "[~@4 f4@2 ab4@2 ab4@2 ~ f4@2 ab4@9 bb4@45 [f4,bb4]@72 ~@5]/6", // Bb5
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Baritone Horn"
const french_horn_2 = note("<A B C@3 D E F G H I@3 J@2 K L@2 M N O@2 P Q R@2 S@4 T@7>".pickRestart({
  A: "~@4 f3 g3", B: "ab3 f3 eb3 f3 g3 eb3", C: "[db3 eb3 f3 db3 f3@10 f3 g3 ab3 f3]/3", D: "eb3 f3 g3 eb3 db3 eb3",
  E: "f3@2 db3@2 f3!2 g3!2 ab3!2 f3!2", F: "eb3!2 f3!2 g3!2 eb3!2 db3!2 f3!2", G: "~ f3@2", H: "g3", I: "[~ f3@8]/3",
  J: "[g3 f3@2]/2", K: "g3@2 f3", L: "f3/2", M: "f3 g3 ab3 f3 eb3 f3", N: "g3 eb3 db3 f3 ~ eb3",
  O: "[db3 eb3 f3 db3 f3@6 f3 g3]/2", P: "ab3 f3 eb3 f3 ~ eb3", Q: "db3 eb3 f3 g3 ~@2",
  R: "[~@2 f3@18 f3@13 f3@4 ~ bb2@4 f3@4 ~@2]/2", S: "[~@8 f3@35 bb2@9 f3@18 bb2@9 eb3@9 f3@8]/4",
  T: "[~ gb3@27 eb3@27 f3@107 ~@6]/7",
})).s("gm_french_horn").gain(0.48)

// bass · tuba · "Bb Tuba"
const bass = note("<A@4 B@4 C D C D E F E G C D C H@2 I@2 J@7 K@7>".pickRestart({
  A: "[~@4 f2@3 c3@3 f2@4 c2@2 f2@3 c3@3 f2@2]/4", B: "[c2@2 f2@3 c3@3 f2@6 f2@3 c3@3 f2@2 f2 eb2]/4", C: "db2 ab2",
  D: "db3 ab2@2", E: "f2 c3", F: "f2@2 c2", G: "f2@2 eb2", H: "[db2@2 ab2 g2 db2@3 ab2@3 db2@2]/2",
  I: "[ab2@4 db2@3 ab2@3 db2@2]/2",
  J: "[ab2@8 db3@4 c3@4 ~ bb2@45 bb2@4 f2@4 ~ bb2@35 bb2@4 ~ f2@4 bb1@9 f2@18 bb1@9 eb2@9 f2@8]/7",
  K: "[~ gb2@27 ab2@27 bb2@71 [bb1,bb2]@36 ~@6]/7", // Bb
})).s("gm_tuba").gain(0.48)

stack(trumpet, trumpet_2, french_horn, french_horn_2, bass)