Strudelify

Dapper Cadaver

Valve Studio Orchestra

KeyD minorTempo80 bpm
0:00/0:00
// Dapper Cadaver — Valve Studio Orchestra
// 80 bpm, 3/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/4 at bar 1, 2/4 at bar 27, 4/4 at bar 27) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/2610566; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 51 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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.

// other · timpani · "Violins 1"
const timpani = note("<A B C D@2 E F ~@19 G@2 H@2 I@2 J@2 K@2 L M N@2 O@5 ~@4 P@2>".pickRestart({
  A: "a5@2 bb5 ~@3", B: "ab5@2 a5 ~@3", C: "g5 bb5 a5", D: "[e5@2 f5@9 e5]/2", E: "f5 d5@2", F: "db5@2 ~",
  G: "[~@8 a2!8 a4@4 ~@4 a4@4 a4@4 a4@4 ~@4 bb4@4 ~@4, ~ d3 d3]/2", H: "[g4 ~ g4!3 ~ a4 ~ f4 ~ f4!2, d3!2 d3]/2",
  I: "[f4 ~ g4 ~ g4 ~ g4 ~ g4 ~ db4 ~, d3!2 d3]/2", J: "[bb4 ~ bb4!3 ~ d5 ~@3 ab4!2, bb2!2 ab2]/2",
  K: "[ab4 ~ bb4 ~ a4 ~ g4 ~ g4 ~ g4 ~, ab2 a2 ~]/2", L: "g4 ~ f4 ~ e4 ~", M: "g4 ~@3 bb4 ~, ~ bb2@2",
  N: "[bb4 ~ bb4 ~@3 ab4 ~ ab4 ~ ab4 ~, bb2 ab2 ab2]/2", O: "[a4@2 g4@2 ab4@3 c5@3 d5@3 eb5@3 ab5@12 ~@2]/5",
  P: "[~@12 bb2!4 e2@32]/2",
})).s("gm_timpani").gain(0.45)

// other · string ensemble 1 · "Violins 2"
const string_ensemble_1 = note("<~@8 A B ~@16 C D@2 E F ~ G H I J@2 K L M ~ N@4 ~@4 O@2>".pickRestart({
  A: "d4 ~ d4", B: "~ e4 ~", C: "~@8 f4!2 d4!2", D: "f4!2 d4!2 f4!2 d4!2 f4!2 d4!2", E: "f4!2 d4!10", F: "d4!8 ~@4",
  G: "d4!2 bb3!2 d4!2 bb3!2 d4!2 bb3!2", H: "d4!2 bb3!2 d4!2 ab3!2 d4!2 ab3!2", I: "d4!2 ab3!2 d4!2 ab3!2 a3!4",
  J: "a3!12", K: "a3!4 d4!2 bb3!2 d4!2 bb3!2", L: "d4!2 bb3!2 d4!2 bb3!2 d4!2 ab3!2",
  M: "d4!2 ab3!2 d4!2 ab3!2 d4!2 ab3!2", N: "[~@2 c5@9 ~]/4", O: "[~@3 e5@5, ~ e4@2, ~@17 b4@31, ~@17 f4@23 ~@8]/2",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violins 2" · soft notes
const string_ensemble_1_soft = note("<~@14 A B A C D E F@2 G H I ~@26>".pickRestart({
  A: "~@2 a4 ~ ab4 ~", B: "~@2 a4 ~ bb4 ~", C: "~@2 a4 ~@3", D: "~@2 f4 ~ e4 ~", E: "~@2 g4 ~ ab4 ~",
  F: "[f4 e4 f4 e4@45]/2", G: "bb4 ~ f4 ~ bb4 ~", H: "a4 ~ f4 ~ a4 ~", I: "a4 ~ g4 ~ e4 ~",
})).s("gm_string_ensemble_1").gain(0.15)

// other · string ensemble 1 · "Violoncellos"
const string_ensemble_1_2 = note("<A B C A D E F G H I J K@3 ~@27 L@4 ~@4 M@2>".pickRestart({
  A: "~@4 [f3,a3] ~@7", B: "~@4 [f3,bb3] ~@7", C: "~@4 [e3,bb3] ~@3 [e3,bb3,db4] ~@3", D: "bb2@2 d3 ~ f3 ~",
  E: "ab2@2 d3 ~ f3 ~", F: "a2 db3 e3", G: "g3 f3 e3", H: "bb2 ~ ab2", I: "~@2 a2@2 b2 ~",
  J: "a2@2 ~@2 bb2 ~@3 g2@2 ~@2", K: "[ab2 ~ e2@6 ~@2 db2@6 ~@2]/3", L: "[~ c3@21 ~@2]/4",
  M: "[~@3 e4@5, ~ e3@2, ~@17 b3@31, ~@17 f3@23 ~@8]/2",
})).s("gm_string_ensemble_1").gain(0.3)

// other · string ensemble 1 · "Violoncellos" · soft notes
const string_ensemble_1_soft_2 = note("<~@14 A B C D E F G H E I J ~@26>".pickRestart({
  A: "d3 ~ a3 ~ d4 ~", B: "d3 ~ bb3 ~ d4 ~", C: "db3 ~ a3 ~ db4 ~", D: "d3 ~ a3 ~@3", E: "bb2 ~ d3 ~ f3 ~",
  F: "ab2 ~ d3 ~ g3 ~", G: "a2 ~ db3 ~ e3 ~", H: "g3 ~ f3 ~ e3 ~", I: "ab2 ~ d3 ~ f3 ~", J: "a2 ~ b2 ~ db3 ~",
})).s("gm_string_ensemble_1").gain(0.2)

// other · string ensemble 1 · "Contrabasses"
const string_ensemble_1_3 = note(`<
  A@2 B C D E F ~ G H I J@2 ~ A@2 K L M N O P D E Q ~ R S@3 T U V W X Y@2 Z AA AB AC@5 ~@4 AD@2
>`.pickRestart({
  A: "d2 ~@2", B: "db2@4 db2!2", C: "d2@2 ~", D: "bb1 ~@2", E: "ab1 ~@2", F: "a1", G: "bb1 ~ ab1", H: "~@2 a1@2 b1 ~",
  I: "a1@2 ~@2 bb1 ~@3 g1@2 ~@2", J: "[ab1 ~ e1@6 ~@4]/2", K: "db2 ~@2", L: "d2@2 ~@3 a1", M: "bb1 ~@5", N: "ab1 ~@5",
  O: "a1 ~ db2 ~ e2 ~", P: "g2 ~ f2 ~ e2 ~", Q: "a1 ~@2", R: "~@2 d2", S: "d2!3", T: "d2!2 db2", U: "db2 a1!2",
  V: "bb1!3", W: "bb1 ab1!2", X: "ab1!2 a1", Y: "a1!3", Z: "a1 bb1!2", AA: "bb1!2 ab1", AB: "ab1!3",
  AC: "[~@2 ab1@12 ~]/5", AD: "[~ e2@2]/2",
})).s("gm_string_ensemble_1").gain(0.4)

// drums · triangle
const triangle = s("triangles:35").struct("<[~@2 x]!2 ~@12 [~@2 x]!3 ~@34>").gain(2.59)

stack(
  timpani, string_ensemble_1, string_ensemble_1_soft, string_ensemble_1_2, string_ensemble_1_soft_2,
  string_ensemble_1_3, triangle
)