Strudelify

Torment

Evan Call

KeyB♭ majorTempo177 bpm
0:00/0:00
// Torment — Evan Call
// 177 bpm, 6/8, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5476794; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(177/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · viola
const viola = note(`<
  A B A C A B D E A B A C A B D E A B A C A F G H I ~@5 J K L M ~@8 N O P O P O P O Q R Q S T U T V W X W Y Z AA Z AB AC
  AD AC AE AC AD AF AG AC AD AC AE AC AD AH AI ~ AJ A B A C A B D E A B A C A F G H AK AL AM AN ~ AO ~ AP ~ AQ AR AS AT
>`.pickRestart({
  A: "d5 ~@2 bb4 ~ g4 ~@2 bb4 ~@2 g4 ~ bb4 ~@2", B: "c5 ~@2 bb4 ~ g4 ~@2 bb4 ~@2 g4 ~ bb4 ~@2",
  C: "c5 ~@2 bb4 ~ c5 ~@2 eb5 ~@2 d5 ~ c5 ~@2", D: "a4 ~@2 gb4 ~ a4 ~@2 bb4 ~@2 gb4 ~ bb4 ~@2",
  E: "c5 ~@2 bb4 ~ c5 ~@2 db5 ~@2 bb4 ~ db5 ~@2", F: "c5 ~@2 bb4 ~ a4 ~@2 g4 ~@2 g4@2 bb4@3",
  G: "g4@3 ~@5 d4@3 c4@2 d4@3", H: "eb4@3 ~@5 gb4@3 ~@5", I: "g4@3 ~@13", J: "d5 ~@2 d5 ~ d5 ~@2 c5 ~@2 c5 ~ c5 ~@2",
  K: "bb4 ~@2 bb4 ~ bb4 ~@2 a4 ~@2 a4 ~ a4 ~@2", L: "~@3 d4 ~ d4 ~@2 c4 ~@2 c4 ~ c4 ~@2",
  M: "bb3 ~@2 c4 ~ bb3 ~@2 a3 ~@7", N: "~@8 bb4 ~@4 g4 ~@2", O: "bb4 ~@2 bb4 ~ bb4 ~@2 g4 ~@7",
  P: "bb4 ~@4 g4 ~@2 bb4 ~@4 g4 ~@2", Q: "g4 ~@2 a4 ~ bb4 ~@2 a4 ~@2 g4 ~ gb4 ~@2",
  R: "g4 ~@2 a4 ~ bb4 ~@2 a4 ~@4 gb4 ~@2", S: "eb4 ~@2 gb4 ~ eb4 ~@2 gb4 ~@4 g4 ~@2",
  T: "g4 ~@2 d4 ~ bb4 ~@2 a4 ~@2 g4 ~ gb4 ~@2", U: "g4 ~@2 d4 ~ bb4 ~@2 a4 ~@4 a4 ~@2",
  V: "g4 ~@2 eb4 ~ gb4 ~@2 g4 ~@7", W: "gb4 ~@2 a4 ~ d5 ~@2 db5 ~@2 b4 ~ bb4 ~@2",
  X: "gb4 ~@2 a4 ~ d5 ~@2 db5 ~@4 b4 ~@2", Y: "g4 ~@2 bb4 ~ g4 ~@2 bb4 ~@7",
  Z: "b4 ~@2 gb4 ~ d5 ~@2 db5 ~@2 b4 ~ bb4 ~@2", AA: "b4 ~@2 gb4 ~ d5 ~@2 db5 ~@4 db5 ~@2",
  AB: "b4 ~@2 db5 ~ d5 ~@2 db5 ~@2 a4 ~ gb4 ~@2", AC: "~@8 bb4 ~@7", AD: "a4 ~@7 bb4 ~@7", AE: "a4 ~@7 gb4 ~@7",
  AF: "~@8 c5 ~@7", AG: "db5 ~@7 d5 ~@7", AH: "eb5 ~@2 eb5 ~ eb5 ~@2 eb5 ~@4 eb5 ~@2", AI: "d5 ~@7 gb5 ~@7",
  AJ: "d4 ~@2 eb4 ~ f4 ~@2 f4 ~@2 gb4 ~ g4 ~@2", AK: "eb5 ~@2 bb4 ~ g4 ~@2 d5 ~@2 bb4 ~ g4 ~@2",
  AL: "db5 ~@2 bb4 ~ f4 ~@2 c5 ~@2 gb4 ~ eb4 ~@2", AM: "b4 ~@2 gb4 ~ d4 ~@2 a4 ~@2 eb4 ~ c4 ~@2",
  AN: "g4 ~@2 eb4 ~ c4 ~@2 gb4 ~@2 db4 ~ ab3 ~@2", AO: "bb4 ~@2 bb4 ~ bb4 ~@2 d5 ~@2 d5 ~ d5 ~@2",
  AP: "eb5 ~@2 d5 ~ c5 ~@2 bb4 ~@2 a4 ~ g4 ~@2", AQ: "d4 ~@2 gb4 ~ d4 ~@2 c4 ~@2 bb3 ~ a3 ~@2", AR: "eb4 ~@3 g4 ~@3",
  AS: "bb3@2 ~ a3@2 bb3@3 c4@2 ~ bb3@2 a3@3", AT: "g3 ~@7",
})).s("gm_viola").gain(0.3)

// other · viola · soft notes
const viola_soft = note("<~@34 A B A B A B A B C ~@70>".pickRestart({
  A: "bb3 ~@4 g3 ~@2 bb3 ~@4 g3 ~@2", B: "a3 ~@2 g3 ~ eb3 ~@2 d3 ~@7", C: "bb4 ~@4 g4 ~@10",
})).s("gm_viola").gain(0.2)

// other · cello
const cello = note(`<
  ~@8 A B A C A B D E F B F C A G H I J ~@5 K L M N O P O P O P O P O Q R S T U V N W X@2 L Y Z X AA AB AC AD AE AB AC
  AF AG AH ~@16 AI A B A C A B D E F B F C A G H I AJ AK ~ AL AM AN AM AO AM AN AP AQ AR
>`.pickRestart({
  A: "g3 ~@3 d4 ~@3", B: "eb4 ~@3 d4 ~@3", C: "eb4 ~@2 eb4 ~ d4 ~@2 c4 ~@2 bb3 ~ a3 ~@2",
  D: "a3 ~@2 gb3 ~ a3 ~@2 bb3 ~@2 gb3 ~ bb3 ~@2", E: "c4 ~@2 bb3 ~ c4 ~@2 f4 ~@2 bb3 ~ a3 ~@2", F: "g4 ~@3 d4 ~@3",
  G: "eb4@2 ~@6 d4@2 ~ e3@2 gb3@3", H: "g3@3 ~@5 c3@3 c3@2 c3@3", I: "c3@3 ~@5 a2@3 ~@5", J: "g2@3 ~@13",
  K: "d4 ~@2 d4 ~ d4 ~@2 c4 ~@2 c4 ~ c4 ~@2", L: "bb3 ~@2 bb3 ~ bb3 ~@2 a3 ~@2 a3 ~ a3 ~@2",
  M: "~@3 d3 ~ d3 ~@2 c3 ~@2 c3 ~ c3 ~@2", N: "bb2 ~@2 c3 ~ bb2 ~@2 a2 ~@7", O: "bb3 ~@4 g3 ~@2 bb3 ~@4 g3 ~@2",
  P: "a3 ~@2 g3 ~ eb3 ~@2 d3 ~@7", Q: "a3 ~@2 g3 ~ eb3 ~@2 d3 ~@4 g3 ~@2", R: "a3 ~@2 bb3 ~ c4 ~@2 eb4 ~@2 d4 ~ c4 ~@2",
  S: "gb4 ~@2 eb4 ~ c4 ~@2 d4 ~@7", T: "d4 ~@2 eb4 ~ d4 ~@2 c4 ~@2 bb3 ~ a3 ~@2",
  U: "g3 ~@2 gb3 ~ g3 ~@2 a3 ~@2 bb3 ~ a3 ~@2", V: "g3 ~@2 gb3 ~ eb3 ~@2 g2 ~@2 c3 ~ bb2 ~@2",
  W: "g3 ~@2 g3 ~ g3 ~@2 g3 ~@2 g3 ~ g3 ~@2", X: "g3 ~@2 g3 ~ g3 ~@2 g3 ~@7", Y: "g3 ~@7 g3 ~@2 g3 ~ g3 ~@2",
  Z: "g3 ~@7 g3 ~@7", AA: "bb3 ~@2 c4 ~ bb3 ~@2 a3 ~@7", AB: "b3 ~@7 b3 ~@2 b3 ~ b3 ~@2", AC: "b3 ~@7 b3 ~@7",
  AD: "b3 ~@2 b3 ~ b3 ~@2 b3 ~@7", AE: "d4 ~@7 b3 ~@2 b3 ~ b3 ~@2", AF: "b3 ~@2 b3 ~ b3 ~@2 b3 ~@2 bb3 ~ b3 ~@2",
  AG: "b3 ~@2 bb3 ~ b3 ~@2 a3 ~@2 g3 ~ gb3 ~@2", AH: "g3 ~@7", AI: "d3 ~@2 eb3 ~ f3 ~@2 f3 ~@2 gb3 ~ g3 ~@2",
  AJ: "eb4 ~@2 bb3 ~ g3 ~@2 d4 ~@2 bb3 ~ g3 ~@2", AK: "db4 ~@2 bb3 ~ f3 ~@2 c4 ~@2 gb3 ~ eb3 ~@2",
  AL: "a3 ~@2 bb3 ~ c4 ~@2 c4 ~@2 db4 ~ d4 ~@2", AM: "d3 ~@3 c3 ~@3", AN: "eb3 ~@3 c3 ~@3",
  AO: "eb3 ~@2 eb3 ~ eb3 ~@2 gb3 ~@2 gb3 ~ gb3 ~@2", AP: "eb3 ~@3 g3 ~@3", AQ: "bb2@2 ~ a2@2 bb2@3 c3@2 ~ bb2@2 a2@3",
  AR: "g2 ~@7",
})).s("gm_cello").gain(0.3)

// other · pizzicato strings
const pizzicato_strings = note("<~@67 A ~ B ~ A C D ~ A ~ B ~ A C E ~@31>".pickRestart({
  A: "d4@3 g4@2 gb4@3 d4@3 ~@5", B: "bb3@3 bb3@2 bb3@3 c4@3 ~@5", C: "eb4@3 ~@5 c4@3 ~@5", D: "d4@3 ~@13",
  E: "d4@3 ~@5 gb4@3 ~@5",
})).s("gm_pizzicato_strings").gain(0.25)

// bass · contrabass
const bass = note(`<
  ~@7 A B ~@5 C D B E B F B G H I J ~@5 K L M N O P O P O P O P ~@8 Q R S T U V W X Y Z AA AB AA AC AD AE AF ~@15 AG AH
  B ~@5 C D B E B F B G H I ~@2 AI AJ AK AL AM AN AK AL AO AP AQ
>`.pickRestart({
  A: "~@8 c2 ~@2 bb1 ~ a1 ~@2", B: "g1@3 ~@13", C: "gb1 ~@2 gb1 ~ gb1 ~@2 g1 ~@2 a1 ~ g1 ~@2",
  D: "a1 ~@2 bb1 ~ a1 ~@2 c2 ~@2 d2 ~ bb1 ~@2", E: "~@8 g1@3 g1@2 g1@3", F: "~@8 gb1@3 gb1@2 gb1@3",
  G: "~@8 g1@3 bb1@2 c2@3", H: "d2@3 ~@5 c2@3 c2@2 c2@3", I: "d2@3 ~@5 gb2@3 ~@5", J: "g2@3 ~@13",
  K: "g2@3 a2@2 bb2@3 bb2@3 c3@2 d3@3", L: "eb3@3 f3@2 gb3@3 g3@3 ~@2 bb2@3", M: "eb3@3 d3@2 c3@3 bb2@3 a2@2 g2@3",
  N: "gb2@3 eb2@2 d2@3 g2@3 ~@5", O: "bb2 ~@4 g2 ~@2 bb2 ~@4 g2 ~@2", P: "a2 ~@2 g2 ~ eb2 ~@2 d2 ~@7",
  Q: "eb2 ~@2 eb2 ~ eb2 ~@2 eb3 ~@4 bb2 ~@2", R: "eb2 ~@2 eb2 ~ bb2 ~@2 eb3 ~@4 bb2 ~@2",
  S: "eb2 ~@2 eb2 ~ eb2 ~@2 eb2 ~@7", T: "bb2 ~@2 bb2 ~ bb2 ~@2 eb2 ~@7", U: "g1 ~@2 g1 ~ g1 ~@2 g1 ~@7",
  V: "g1 ~@2 g1 ~ g1 ~@2 bb1 ~@2 bb1 ~ gb1 ~@2", W: "g1 ~@2 g1 ~ g1 ~@2 g1 ~@4 a1 ~@2",
  X: "bb1 ~@2 c2 ~ bb1 ~@2 a1 ~@7", Y: "b1 ~@2 b1 ~ b1 ~@2 b1 ~@4 b1 ~@2", Z: "b1 ~@2 b1 ~ d2 ~@2 d2 ~@4 b1 ~@2",
  AA: "b1 ~@2 b1 ~ b1 ~@2 b1 ~@7", AB: "d2 ~@2 d2 ~ d2 ~@2 b1 ~@7", AC: "gb2 ~@2 gb2 ~ gb2 ~@2 e2 ~@2 e2 ~ e2 ~@2",
  AD: "d2 ~@2 d2 ~ d2 ~@2 d2 ~@2 db2 ~ d2 ~@2", AE: "d2 ~@2 e2 ~ d2 ~@2 db2 ~@2 a1 ~ gb1 ~@2", AF: "g1 ~@3",
  AG: "g2 ~@2 a2 ~ bb2 ~@2 bb2 ~@2 c3 ~ d3 ~@2", AH: "d3 ~@2 eb3 ~ f3 ~@2 f3 ~@2 gb3 ~ g3 ~@2",
  AI: "b2 ~@2 gb2 ~ d2 ~@2 a2 ~@2 eb2 ~ c2 ~@2", AJ: "g2 ~@2 eb2 ~ c2 ~@2 gb2 ~@2 db2 ~ ab1 ~@2", AK: "g1 ~@7 d2 ~@7",
  AL: "eb2 ~@2 eb2 ~ eb2 ~@2 c2 ~@2 c2 ~ c2 ~@2", AM: "g1 ~@2 g1 ~ g1 ~@2 d2 ~@7",
  AN: "eb2 ~@2 eb2 ~ eb2 ~@2 gb2 ~@2 gb2 ~ gb2 ~@2", AO: "eb2 ~@3 g2 ~@3", AP: "bb1@2 ~ a1@2 bb1@3 c2@2 ~ bb1@2 a1@3",
  AQ: "g1 ~@7",
})).s("gm_contrabass").gain(0.4)

stack(viola, viola_soft, cello, pizzicato_strings, bass)

More by Evan Call