Strudelify

Dream On

Depeche Mode

KeyE♭ minorTempo127 bpm
0:00/0:00
// Dream On — Depeche Mode
// 127 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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.

// chords · piano
const piano = note("<~@58 A@3 B C@3 D ~@34 E@3 B E@3 B ~@3 E@3 B E@3 B ~@18>".pickRestart({
  A: "[~@7 [eb4,ab4]@7 [db4,gb4] db4 b3@3 [b3,gb4] [b3,ab4]@3 [b3,gb4], ~@15 ab4@4 ~@5]/3", B: "[bb3,eb4]",
  C: "[~@7 [eb4,ab4]@7 [db4,gb4] db4 b3@3 [b3,gb4] [b3,ab4]@3 [bb3,gb4], ~@15 ab4@4 ~@5]/3", D: "[gb3,eb4]",
  E: "[~@7 ab4@5 gb4@2 [db4,gb4] db4 ~ eb4@2 [b3,gb4] [b3,ab4]@3 [b3,gb4], ~@7 eb4@7 ~ f4@2 ~@7, ~@16 b3@3 ~@5]/3", // Gb5 B5 E B5
})).s("gm_piano").gain(0.05)

// bass · synth bass 2
const bass = note(`<
  A ~@2 B C@14 D@2 ~ C@20 D@2 C@13 D@2 E C@7 D@2 E ~@6 C@8 D@2 ~@5 C@8 D@2 E C@7 D@2 F C G@2 C@5 D@2 H C@13 D@2
>`.pickRestart({
  A: "eb1", B: "~@7 eb1 eb1@2 eb2 ~ eb2@2 eb1@2", C: "eb1@2 ~@5 eb1 eb1@2 eb2 ~ eb2@2 eb1@2",
  D: "[eb1@2 ~@5 eb1 eb1@2 eb2 ~ eb2@2 eb1@4 ~@14]/2", E: "eb1@3 ~@5", F: "eb1@3 ~@11 eb1@2",
  G: "[eb1@2 ~@5 eb1 eb1@2 eb2 ~ eb2@2 eb1@4 ~@12 eb1@2]/2", H: "~@7 eb1",
})).s("gm_synth_bass_2").gain(0.64)

// chords · pad warm
const pad_warm = note(`<
  ~@18 A B@2 C@3 D E C@3 D E C@2 D E C@7 ~ C@3 D E C@3 D E C@2 F G H@2 F G I@2 F G C@2 J K L@4 M@2 L@2 N@6 O@2 ~@15 P F
  G I@2 F G C@2 J Q@2 ~@2 C R@2 G C S@2 K C@14 ~
>`.pickRestart({
  A: "~ [bb4,eb5,eb6]@3", B: "[eb5 f5, [bb4,bb5]]/2", C: "[eb3,bb3]", D: "[ab3,eb4]", E: "[b3,eb4]", F: "[ab3,eb4,ab4]",
  G: "[b3,eb4,b4]", H: "[eb4,f4,bb4]/2", I: "[[eb3,bb3] [eb3,bb3], bb5@3 ~]/2", J: "[b4,eb5,gb5]", K: "[ab4,db5,f5]",
  L: "[c4,eb4,gb4,bb4]/2", M: "[bb4 [ab2,bb4], [c4,eb4,gb4]]/2", N: "[ab2,c4,eb4,gb4,bb4]/2",
  O: "[[ab2,c4,eb4,gb4,bb4]@3 ~]/2", P: "~@3 eb5@5", Q: "[[ab4,db5,f5,c6]@3 ~]/2",
  R: "[eb3 [ab3,eb4,ab4], [bb4,f5,c6]@3 ~]/2", S: "[[eb3,bb3] [b4,eb5,gb5], [f4,c5]@3 ~]/2",
})).s("gm_pad_warm").gain(0.31)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note("<~@58 A@3 B C@3 D ~@34 E@3 B E@3 B ~@3 E@3 B E@3 B ~@18>".pickRestart({
  A: "[~@14 [eb4,ab4]@13 ~ [db4,gb4]@2 db4@2 b3@4 ~@2 [b3,gb4]@2 [b3,ab4]@2 [b3,ab4]@2 [b3,ab4]@2 [b3,gb4]@2, ~@5 ab4 ~@2]/3", // Ab5 Gb5 B5 E B5
  B: "[bb3,eb4]@3 ~", // Eb5
  C: "[~@14 [eb4,ab4]@13 ~ [db4,gb4]@2 db4@2 b3@4 ~@2 [b3,gb4]@2 [b3,ab4]@2 [b3,ab4]@2 [b3,ab4]@2 [bb3,gb4]@2, ~@5 ab4 ~@2]/3", // Ab5 Gb5 B5 E Ebm
  D: "eb4@3 ~, gb3 ~",
  E: "[~@14 ab4@9 ~ gb4@4 [db4,gb4]@2 db4@2 ~@2 eb4@4 [b3,gb4]@2 [b3,ab4]@2 [b3,ab4]@2 [b3,ab4]@2 [b3,gb4]@2, ~@14 eb4@13 ~@3 f4@4 ~@14, ~@8 b3 ~@3]/3", // Gb5 B5 E B5
})).s("gm_lead_2_sawtooth").gain(0.37).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@7 A@4 B A@3 B A@3 ~@2 A@3 C@3 A@2 C@3 A C@3 A D A@3 E@2 A@3 C@3 A@2 C@3 A F@3 G C@3 A C@3 A H ~@9 I J I J I J I K
  L@2 A C@3 A@2 C@3 A M@4 C@3 A C@3 A H ~ N A O@2 A C@3 A H ~ N A N A N A N A N A N A N P@2
>`.pickRestart({
  A: "eb2 bb2 gb3 eb3 [bb2,db3] ~@2 [eb2,eb3], ~@5 [eb2,eb3]@2 ~, ~@3 bb2", // Bbm Eb
  B: "~ [eb4,gb4] [bb2,eb4,gb4]@2 [gb3,eb4,gb4] ~ eb3@2 [bb2,db3]@2 ~@4 [eb2,eb3]@2, eb2@3 ~@7 [eb2,eb3]@4 ~@2, ~@3 bb2", // Ebm Bbm Eb
  C: "[~ eb3 ~@2 eb3 ab3 eb3 ~@2 eb3 ~@2 eb3 ab3 eb3 ~ [eb2,bb2] bb2 gb3 eb3 [bb2,db3] ~@2 [eb2,eb3], ab2@3 ab2@3 [ab2,b2]@2 b2@3 b2@3 b2@2 ~@5 [eb2,eb3]@2 ~, ~@2 ab3@3 ~@2 eb3@2 ~ ab3@3 ~@2 eb3@2 ~@5 bb2@2]/3", // Eb5 Bbm Eb Abm Eb
  D: "eb2 ~ bb2@2 gb3@2 eb3@2 [bb2,db3]@2 ~@4 [eb2,eb3]@2, ~@5 [eb2,eb3]@2 ~, ~@3 bb2", // Bbm Eb
  E: "[eb2 ~ bb2@2 gb3@2 eb3@2 [bb2,db3]@2 ~@4 [eb2,eb3]@4 bb2 ~ [bb2,eb3] ~ bb2 ~ [bb2,eb3] ~ bb2 ~ [bb2,eb3] ~ bb2 ~, ~@5 [eb2,eb3]@2 ~@9, ~@3 bb2 ~@4]/2", // Bbm Eb Eb5 Eb
  F: "[~@2 eb3@2 ~@4 eb3@2 ab3@2 eb3@2 ~@4 eb3@2 ~@4 eb3@2 ab3@2 eb3@2 ~@2 eb2@3 ~@13, ab2@3 ab2@3 [ab2,b2]@2 b2@3 b2@3 b2@2 ~@8, ~@2 ab3@3 ~@2 eb3@2 ~ ab3@3 ~@2 eb3@2 ~@7]/3", // Abm
  G: "~@7 db3", H: "eb2@3 ~@13", I: "~@3 [c3,eb3]@2 db3 eb3@2", J: "[eb3,gb3]", K: "[bb2,gb3]",
  L: "[eb2 bb2 gb3 eb3 [bb2,db3] ~ gb3 eb2 eb2 bb2 gb3 eb3 [bb2,db3] ~@2 [eb2,eb3], ~@5 [eb2,eb3]@2 eb3@2 ~@5 bb2@2, ~@6 bb2@2 ~@5 [eb2,eb3]@2 ~]/2", // Bbm Eb
  M: "[~ eb3 ~@2 eb3 ab3 eb3 ~@2 eb3 ~@2 eb3 ab3 eb3 ~ eb2 bb2 gb3 eb3 [bb2,db3] ~ gb3 eb2 eb2 bb2 gb3 eb3 [bb2,db3] ~@2 db3, ab2@3 ab2@3 [ab2,b2]@2 b2@3 b2@3 b2@2 ~@5 [eb2,eb3]@2 eb3@2 ~@7, ~@2 ab3@3 ~@2 eb3@2 ~ ab3@3 ~@2 eb3@2 ~@5 bb2@2 ~@8]/4", // Bbm Abm Eb
  N: "[eb2,bb2] bb2 gb3 eb3 [bb2,db3] ~@2 [eb2,eb3], ~@5 [eb2,eb3]@2 ~, ~@3 bb2", // Eb5 Bbm Eb
  O: "[~@8 [eb2,bb2] bb2 gb3 eb3 [bb2,db3] ~@2 [eb2,eb3], ~@7 eb3@2 ~@4 [eb2,eb3]@2 ~, ~@7 bb2]/2", // Eb5 Bbm Eb
  P: "[eb2@2 bb2@2 gb3@2 eb3@2 [bb2,db3]@2 ~@4 [eb2,eb3]@5 ~@13, ~@5 [eb2,eb3]@2 ~@9, ~@3 bb2 ~@4]/2", // Bbm Eb
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A@12 B@4 C@2 B@21 ~ B@24 D E F G F G F G F G F G F G F G F H ~@5 B@19 C G B@2 ~ B@6 ~ I J@10 ~@3 K H
>`.pickRestart({
  A: "x ~@6 x!2 ~@7", B: "x ~ x ~@4 x!2 ~@5 x ~", C: "x!2 ~@2 x ~@2 x", D: "x ~@3 x ~@2 x", E: "x ~@7 x ~@4 x ~@2",
  F: "~ x ~@2 x ~@2 x", G: "x ~ x ~@5 x ~@4 x!2 ~", H: "x", I: "~@7 x", J: "x ~@6 x", K: "~@8 x ~@6 x",
})).gain(0.58)

// drums · rim
const rim = s("rim").struct("<~@56 A B C ~@5 A ~@2 D@17 ~@14 A ~@7 A ~@2 D@2 ~@6 A ~@19>".pickRestart({
  A: "~@6 x!2", B: "~ x ~ x", C: "~ x ~@2", D: "~@2 x ~@2 x ~@2",
})).gain(0.58)

// drums · snare
const snare = s("sd").struct(`<
  ~@15 A@27 ~ A@13 B C D A@2 E A@2 B A E A@17 ~@4 A@10 B A E A@2 E A@2 B A E A@4 ~ E A@2 B A E ~@17
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~@4 x ~@5 x ~@2 x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~ x ~@2", E: "x ~ x ~@2 x ~@2",
})).gain(0.44)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@60 A ~@4 A ~@33 A ~@2 A ~@4 A ~@5 A ~@4 A ~@18>".pickRestart({
  A: "~@14 x!2",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct(`<
  A@3 ~@8 B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B ~ B C B C B C B C B C B C B C B D B C B C B C B
  C B E B F B F B F B F B F B F B F B G ~@3 C B C B C B C B C B C B H B C B C B C B C B E B C ~ B C B C B C B E B C B C
  B C B C B C ~@5
>`.pickRestart({
  A: "x!4", B: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", C: "x!8", D: "x ~@3 x ~@2 x!2 ~@7", E: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x",
  F: "x ~ x ~ x ~ x!2", G: "x", H: "x ~@3 x ~@2 x!2 ~ x ~ x ~ x ~",
})).gain(0.29)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@12 A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ C ~ D
  ~ D ~ D ~ D ~ D ~ D ~ D ~@5 A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ C ~ A@2 ~ A ~ A ~ A ~ C ~ A ~ A ~ A ~ A ~ A
  ~@5
>`.pickRestart({
  A: "~@15 x", B: "~ x ~ x ~@4", C: "~ x ~ x ~ x ~ x", D: "~@2 x ~@3 x ~@3 x ~@4 x",
})).gain(0.15)

stack(piano, bass, pad_warm, lead_2_sawtooth, acoustic_guitar_steel, kick, rim, snare, snare_soft, hihat, hihat_soft)

More by Depeche Mode