Strudelify

Policy of Truth

Depeche Mode

KeyC minorTempo120 bpm
0:00/0:00
// Policy of Truth — Depeche Mode
// 120 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// 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 · baritone sax · "BARITONSAX"
const baritone_sax = note("<~@56 A@2 B C D@2 E C F C G H ~@24 A@2 B C D@2 ~@17>".pickRestart({
  A: "[[eb2,eb3]@31 ~]/2", B: "~@2 [c3,bb3,c4] ~@5 [c3,c4]@2 ~@4 [c3,c4]@2, ~@14 bb3 ~", C: "~ [c3,c4] ~ [c3,c4]@4 ~",
  D: "[[eb2,eb3]@15 ~]/2", E: "~ [c3,c4] ~@2 c4 ~@2 [c3,c4], ~@2 bb3 ~@5 c3 ~@5 bb3 ~",
  F: "~@2 [c3,bb3] ~@5 c4@2 ~@4 [c3,bb3] ~, ~@2 c4@2 ~@4 c3 ~@5 c4@2", // C7
  G: "~@2 [b2,c3] ~@5 [c3,c4] ~@5 c4@2, ~@2 c4@2 ~@10 c3 ~", H: "~@2 [c3,c4] ~@3 [c3,c4]@8 ~@2",
})).s("gm_baritone_sax").gain(0.36)

// chords · sitar
const sitar = note(`<
  ~@8 A B C D C B A B ~@8 E@2 F@2 G@2 H I J K J L H M ~@8 E@2 F@2 G@2 H I J K ~@12 N@8 ~@8 O@2 P@3 Q H I R ~@5 H I J K J
  L H M H I J K J L H M S
>`.pickRestart({
  A: "~@10 c4@2 eb4 ~ ab4@2", B: "~@2 ab4@2 g4@2 eb4@2 g4@5 ~@3", C: "~@5 c4 eb4 ab4",
  D: "~@2 ab4@2 g4@2 eb4 ~ g4@5 ~@3", E: "[[ab2,ab3]@31 ~]/2", F: "[[f4,f5]@31 ~]/2", G: "[f4,f5]/2",
  H: "~@10 c4@2 eb4 ~ ab4@2, bb5", I: "~@2 ab4@2 g4@2 ~ g4@5 ~@4, ab5 ~, ~@3 eb4 ~@4", J: "~@5 c4 eb4 ab4, bb5",
  K: "~@2 ab4@2 g4@2 eb4 ~ g4@5 ~@3, ab5 ~", L: "~@2 ab4@2 g4@2 eb4@2 g4@5 ~@3, ab5@7 ~@9",
  M: "~@2 ab4@2 g4@2 eb4@2 g4@5 ~@3, ab5 ~", N: "c3/8", O: "[ab2@31 ~]/2", P: "[f2@32 bb2@15 ~]/3", Q: "b2", R: "bb5",
  S: "~@2 [c3,c4]@7 ~@7", // C
})).s("gm_sitar").gain(0.4)

// chords · electric bass pick · "PICK BASS"
const electric_bass_pick = note(`<
  A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B A ~ A B ~@6 A ~ A B A ~ A B A ~ A B A ~ A B ~@6 A ~ A B ~@34 A ~@7 A ~ A B A ~
  A B A ~ A B A ~ A B ~
>`.pickRestart({
  A: "~@8 [c4,eb4]@3 ~@5", B: "~@5 [c4,eb4] ~@2",
})).s("gm_electric_bass_pick").gain(0.12)

// bass · electric bass pick · "PICK BASS"
const bass = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B C@2 D@2 E F A B A B A B A B A B A B A B A B C@2 D@2 E F A B A B G H A
  B G H A B A B A B ~@22 A B G H A B G H A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "c2!3 ~@3 c2!2", B: "ab1!3 ~ c2!2 eb2 c2", C: "ab1!8", D: "f1!8", E: "bb1!8", F: "b1!8", G: "eb2!8", H: "f2!8",
})).s("gm_electric_bass_pick").gain(0.32)

// drums · kick
const kick = s("bd").struct("<A@24 B C B C B C A@16 B C B C B C A@32 B C B C B C A@24 D>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@2 x ~ x ~@2", C: "x ~@2 x ~ x ~ x", D: "x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<A@19 B A@17 B A@4 C A@12 B A@11 D A@45 B E>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@4 x ~@6 x!2 ~@3", E: "x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<A@24 B C B C B C B@8 A@8 B C B C B C B@16 ~@22 B@24 ~>".pickRestart({
  A: "~ x ~ x ~@3 x", B: "x!8", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~",
})).gain(0.32)

// drums · tambourine
const tambourine = s("tb").struct("<~@30 A@8 ~@14 A@4 ~@6 A@6 ~@22 A@2 ~@6 A@16 ~>".pickRestart({
  A: "x!16",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@67 [~@3 x] ~@46 x>").gain(0.32)

stack(baritone_sax, sitar, electric_bass_pick, bass, kick, snare, hihat, tambourine, crash)

More by Depeche Mode