Strudelify

In Your Room

Depeche Mode

KeyC♯ minorTempo99 bpm
0:00/0:00
// In Your Room — Depeche Mode
// 99 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "FRETLESS" fretless bass (copy of ch 5 "FRETLESS" fretless bass, 0.25 beats late)
// note: Full arrangement: all 159 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/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.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@42 A B@2 C D B@2 C D B E C D B F G H I J K L M N O P Q R S T Q R S U V W U L V W U L V W U X Y Z AA B@2 C D E B C D
  B@2 C AB B F G H I J AC L M N O P Q R S T Q R S T Q R S U V W U@2 V W U@2 V W U@2 V W U@2 V W U@2 V W U@2 V AD U@2 V W
  U@2 V
>`.pickRestart({
  A: "~@7 e1", B: "c#1@2 ~ c#1@3 c#1@3 c#1@4 ~ e1@2", C: "c#1@3 c#1@3 c#1@3 c#1@4 ~ e1@2",
  D: "c#1@3 c#1@3 c#1@3 c#1@2 ~@3 e1@2", E: "c#1@2 ~ c#1@2 ~ c#1@3 c#1@4 ~ e1@2", F: "f1@2 ~ f1@3 f1@6 ~@2 d#1@2",
  G: "f1@3 f1@3 f1@3 f1@4 ~ d#1@2", H: "a1@2 ~ a1@3 a1@7 ~ a1 ~", I: "a1@3 a1@3 a1@3 a1@3 ~ a1@2 ~",
  J: "f#1@2 ~ f#1@3 f#1@7 ~ f#1@2", K: "f#1@3 f#1@3 f#1@3 ~@5 b1@2", L: "c#2@3 c#2@3 b1@2 c#2@2 ~ c#2@3 b1@2",
  M: "c#2@2 ~ c#2@3 b1@2 c#2@3 c#2@3 e1@2", N: "f#1@3 f#1@3 e1@2 f#1@2 ~ f#1@3 e1@2",
  O: "f#1@3 f#1@3 e1@2 f#1@2 ~ f#1@3 b1@2", P: "c#2@2 ~ c#2@3 b1@2 c#2@3 c#2@3 b1@2",
  Q: "c#2@3 c#2@3 b1@2 c#2@3 c#2@3 e1@2", R: "f#1@3 f#1@3 e1@2 f#1@3 f#1@3 e1@2",
  S: "f#1@3 f#1@3 e1@2 f#1@3 f#1@3 b1@2", T: "c#2@3 c#2@3 b1@2 c#2@3 c#2@3 b1@2",
  U: "c#2@2 ~ c#2@3 b1@2 c#2@2 ~ c#2@3 b1@2", V: "c#2@2 ~ c#2@3 b1@2 c#2@2 ~ c#2@3 c#2@2",
  W: "b1@2 ~ b1@3 b1@4 b1@3 ~ b1@2", X: "c#2@2 ~ c#2 c#2@2 b1@2 c#2@3 ~ c#2@2 b1@2",
  Y: "c#2@2 ~ c#2 c#2@2 b1@2 c#2@3 c#2 c#2@2 b1@2", Z: "c#2@2 ~ c#2 ~@2 b1@2 c#2@3 c#2 c#2@2 b1@2",
  AA: "c#2@3 c#2 c#2@2 b1@2 c#2@3 c#2 c#2@2 b1@2", AB: "c#1@2 ~ c#1@3 c#1@3 c#1@2 ~@3 e1@2",
  AC: "f#1@3 f#1@3 g#1@3 ~@5 b1@2", AD: "b1@2 ~ b1@3 b1@3 ~ b1@3 ~ b1@2",
})).s("gm_fretless_bass").gain(0.48)

// bass · fretless bass · "FRETLESS" · soft notes
const bass_soft = note("<A@29 B@2 C@2 D@2 A@8 ~@18 E ~@24 F ~ G ~@19 H ~@50>".pickRestart({
  A: "~@4 c#1 ~@3", B: "~@4 f1 ~@3", C: "~@4 a1 ~@3", D: "~@4 f#1 ~@3", E: "~@9 f#1@5 ~@2", F: "~@11 c#2 ~@4",
  G: "~@2 c#2 ~@5", H: "~@9 g#1@5 ~@2",
})).s("gm_fretless_bass").gain(0.24)

// bass · fretless bass · "FRETLESS"
const bass_2 = note(`<
  [~@3 c#1 ~ c#1 ~@3 c#1 ~ c#1 ~@3 c#1]!29
  [~@3 f1 ~ f1 ~@3 f1 ~ f1 ~@3 f1]!2
  [~@3 a1 ~ a1 ~@3 a1 ~ a1 ~@3 a1]!2
  [~@3 f#1 ~ f#1 ~@3 f#1 ~ f#1 ~@3 f#1]
  [~@3 f#1 ~ f#1 ~@3 g#1 ~ g#1 ~@3 g#1]
  [~@3 c#1 ~ c#1 ~@3 c#1 ~ c#1 ~@3 c#1]!8
  ~@116
>`).s("gm_fretless_bass").gain(0.42).pan(0)

// other · timpani
const timpani = note(`<
  ~@35 A B@4 C@2 D E F G H E F G H E F G H E I J H E F G H E F G H E F G H E F G H E K G H E K G H E K L ~@73
>`.pickRestart({
  A: "c#4@9 ~@7", B: "c#4@3 ~@13", C: "c#4 ~@3", D: "c#4@4 ~@10 c#4 ~", E: "c#4 ~ c#4 ~ c#4 ~ c#4 ~@2 c#4!2 ~ c#4 ~@3",
  F: "c#4 ~ c#4!3 ~ c#4!2 ~ c#4!2 ~ c#4 ~ c#4!2", G: "c#4 ~@2 c#4!2 ~ c#4!2 ~ c#4!2 ~ c#4 ~ c#4!2",
  H: "c#4 ~@2 c#4!2 ~ c#4!2 ~ c#4!3 c#4@2 c#4!2", I: "c4 ~ c4!3 ~ c4!2 ~ c4!2 ~ c4 ~ c4!2",
  J: "c4 ~@2 c4!2 ~ c4!2 ~ c4!2 ~ c4 ~ c4!2", K: "b3 ~ b3!3 ~ b3!2 ~ b3!2 ~ b3 ~ b3!2",
  L: "c#4 ~@2 c#4!2 ~ c#4!2 ~ c#4!2 ~ c#4 ~@3",
})).s("gm_timpani").gain(0.12)

// other · timpani · soft notes
const timpani_soft = note(`<
  ~@43 A ~ B@2 A ~ B@2 A ~ B@2 A ~ C B A ~ B@2 A ~ B@2 A ~ B@2 A ~ B@2 A ~ B@2 A ~ B@2 A ~ B ~@73
>`.pickRestart({
  A: "~@3 c#4 ~@3 c#4 ~@3 c#4 ~@2 c#4!2", B: "~@2 c#4 ~@13", C: "~@2 c4 ~@13",
})).s("gm_timpani").gain(0.07)

// chords · lead 5 charang · "CHARANG"
const lead_5_charang = note("<~@11 A@5 ~ B@6 C@2 ~@2 D@2 E@2 ~@55 F@4 G H I J K J L J M N@2 M@2 ~@56>".pickRestart({
  A: "[~@14 c#3@65 ~]/5", B: "[c#2@29 ~@3, c#3@31 ~@65]/6", C: "[~@6 [g#4,g#5]@4 [b4,b5]@15 ~@7]/2",
  D: "[[g#3,g#4]@5 ~@2 g#3@2 g#3@2 g#4@2 ~@13 g#4@6, ~@5 g#4@5 ~@3 g#3@3 g#3@15 ~, ~@7 g#4@5 ~@4]/2", // G#
  E: "[~@4 g#4@15 ~@3 g#4@10]/2", F: "g#5!16", G: "[c#5,g#5]!9 g#5 [c#5,g#5]!6",
  H: "[c#5,g#5] g#5 [c#5,g#5]!3 g#5 [c#5,g#5]!7 g#5 [c#5,g#5]!2", I: "[c#5,g#5]!13 g#5 [c#5,g#5] g#5",
  J: "[c#5,g#5]!16", K: "[c#5,g#5]!3 g#5 [c#5,g#5]!11 g#5", L: "[c#5,g#5]!7 g#5 [c#5,g#5]!5 g#5 [c#5,g#5]!2",
  M: "[d#5,g#5]!16", N: "[e5,a5]!16",
})).s("gm_lead_5_charang").gain(0.13)

// chords · lead 5 charang · "CHARANG" · soft notes
const lead_5_charang_soft = note("<~@23 A ~ B C ~@3 D ~@59 E F G ~ H ~ I ~@62>".pickRestart({
  A: "~ [b4,b5]@3 ~@4", B: "~@5 [c#4,c#5]@2 ~ c#5 ~ c#5!2 ~ c#5 ~ c#5, ~@7 c#4@4 ~ c#4@3 ~",
  C: "c#4 c#5 ~ c#5 c#5@4 ~@8, ~ c#4@5 ~@2", D: "~ g#3@7", E: "~@9 c#5 ~@6", F: "~ c#5 ~@3 c#5 ~@7 c#5 ~@2",
  G: "~@13 c#5 ~ c#5", H: "~@3 c#5 ~@11 c#5", I: "~@7 c#5 ~@5 c#5 ~@2",
})).s("gm_lead_5_charang").gain(0.06)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@17 A@8 ~@10 B C D@2 B C E@2 F@8 ~ G@2 H@2 I@2 J@2 K@2 L@4 M@4 L@4 ~@12 N@4 O@8 ~ G@2 H@2 P@4 Q@2 R@4 S@4 T@4 U@4 V
  W@2 X V Y@2 X Z@3 AA V W@2 X V Y@2 X Z@3 AA V Y@2 X V Y@2 X AB@2
>`.pickRestart({
  A: "[~@7 [c#1,c#2]@121]/8", B: "e4@15 ~", C: "d#4", D: "f#4/2", E: "[f#4@15 ~]/2", F: "[c#4@47 ~ b3@16, e4]/8",
  G: "[a3,c#4]/2", H: "[c#4,e4]/2", I: "[[c4,f4]@31 ~]/2", J: "[[a3,e4]@31 ~]/2", K: "[[c#4,f#4]@31 ~]/2",
  L: "[c#4@31 ~]/4", M: "[c#4@61 ~@3]/4", N: "[[g#3,c#4,e4]@61 ~@3]/4", O: "[c#4@23 ~ b3@8, e4]/8",
  P: "[[c4,f4,c6]@32 [a3,e4,b5]@31 ~, c#-1@31 ~]/4", Q: "[~@16 d#5@15 ~, [c#4,f#4]@31 ~, f#5@3 ~]/2",
  R: "[g#6@31 ~ a6@32, c#4@31 ~]/4", S: "[g#6@31 ~ a6@32, c#4@61 ~@3]/4",
  T: "[e6@16 d#6@16 f#6@31 ~, [c#4,c#6]@31 ~]/4", U: "[e6@15 ~ d#6@16 f#6@31 ~, [c#4,c#6]@31 ~]/4", V: "[g5,b5,e6]",
  W: "[[a#5,d#6] [a5,d6], f#5]/2", X: "[e5,g#5,c#6]", Y: "[[a#5,d#6] [a5,d6], f#5@31 ~]/2",
  Z: "[[b5,e6]@16 [a#5,d#6]@15 ~ [a5,d6]@16, g5@11 ~@13, ~@16 f#5@31 ~]/3", AA: "[e5,g#5,c#6]@15 ~",
  AB: "[[b5,e6]@16 [f#5,a#5,d#6]@15 ~, g5@21 ~@11]/2", // E5 D#m
})).s("gm_string_ensemble_2").gain(0.11)

// chords · whistle
const whistle = note("<~@62 A@2 B C@3 B D@3 E F ~@35 A@2 B G@3 B D@3 H F I ~ E F ~@34>".pickRestart({
  A: "[[c#5,e5]@2 ~ [c#5,e5]@2 ~ c#5@2 ~@24, g#4@31 ~]/2", B: "[c#5,f#5]@2 ~ [c#5,f#5]@2 ~ [c#5,f#5]@2 ~@8, a4",
  C: "[~@16 [c#5,e5]@2 ~ [c#5,e5]@2 ~ [c#5,e5]@2 ~@24, g#4@23 ~]/3", // C#m
  D: "[~@16 [c#5,e5]@2 ~ [c#5,e5]@2 ~ [c#5,e5]@2 ~ [c#5,e5]@2 ~@21, g#4@47 ~]/3", // C#m
  E: "[c#5,f#5]@2 ~ [c#5,f#5]@2 ~ [c#5,f#5]@2 ~@2 [c#5,f#5]@2 ~@4, a4", F: "g#4@15 ~",
  G: "[~@16 [c#5,e5]@2 ~ [c#5,e5]@2 ~ [c#5,e5]@2 ~@24, g#4@47 ~]/3", // C#m
  H: "[c#5,f#5]@2 ~ [c#5,f#5]@2 ~ [c#5,f#5]@2 ~@2 [c#5,f#5]@2 ~@4, a4@15 ~", // F#5
  I: "[c#5,e5]@2 ~ [c#5,e5]@2 ~ [c#5,e5]@2 ~ [c#5,e5]@2 ~@5", // C#m
})).s("gm_whistle").gain(0.03).pan(0.4)

// chords · whistle · soft notes
const whistle_soft = note("<~@62 A ~ B ~ C ~ B ~@40 A ~ B ~ C ~ B ~@43>".pickRestart({
  A: "~@3 e5 ~@4", B: "~@5 [c#5,f#5] ~@2", C: "~@5 [c#5,e5] ~@2",
})).s("gm_whistle").gain(0.01).pan(0.4)

// other · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@35 A@2 B@2 C D E F ~@19 G ~ H ~ G ~ H ~ I ~ J ~@13 K@4 L@2 M@2 N O M@3 O@2 M@2 ~@6 G ~ H ~ G ~ H ~ I ~ J ~ I ~ J
  ~@35
>`.pickRestart({
  A: "[[c#2,c#4] [c#2,c#4,d#4], g#4@5 ~@3, ~@8 g#3@7 ~]/2", B: "[[c#2,g#3,c#4,f#4]@31 ~]/2", C: "[c#2,g#3,c#4,e4]@15 ~",
  D: "[c#2,g#3,c#4,d#4]@15 ~", E: "[c#2,g#3,c#4,d#4,f#4]", F: "[c#2,g#3,c#4]@15 ~", G: "[c#5,e5]@5 ~@11",
  H: "[c#5,f#5]@5 ~@11", I: "[c#5,e5]@3 ~@13", J: "[c#5,f#5]@3 ~@13", K: "g#5!16", L: "c#5!16", M: "d#5!16",
  N: "[d#5,e5] e5!15", O: "e5!16",
})).s("gm_pad_new_age").gain(0.02).pan(0.6)

// chords · pad halo · "HALO PAD"
const pad_halo = note(`<
  ~@31 A@2 B@3 C@2 D E C@2 F ~@17 G H I@2 J@2 I@2 K@2 I@2 K@2 L M N O L M N O L M N O P@4 ~ Q R@2 S@2 R@2 ~@9 G H I@2
  J@2 I@2 K@2 I@2 K@2 I@2 K@2 L M N O L M N O L M N O L M N O L M N O L M N O L M N O L M N O L ~
>`.pickRestart({
  A: "[a5@31 ~]/2", B: "[~ d#5 e5@2 d#5@2, a5@31 ~@17, ~@8 c#5@31 ~@9]/3", C: "[c#5@31 ~]/2", D: "e5", E: "d#5@15 ~",
  F: "e5@15 ~", G: "g#4@2 ~ g#4@2 ~ g#4 ~@2 g#4@2 ~ g#4@2 ~@2", H: "g#4 ~@2 g#4 ~@2 g#4 ~@2 g#4 ~@3 g#4 ~@2",
  I: "[g#4@31 ~]/2", J: "a4/2", K: "[a4@31 ~]/2", L: "[g4,b4,e5]", M: "[f#4,a#4,d#5]", N: "[f#4,a4,d5]",
  O: "[e4,g#4,c#5]@15 ~", P: "[c#3@61 ~@3, c#6 ~@7]/4", Q: "c#4@15 ~", R: "[d#4@15 ~]/2", S: "[e4@31 ~]/2",
})).s("gm_pad_halo").gain(0.08).pan(0.7)

// other · melodic tom · "MELO TOM 1"
const melodic_tom = note("<~@85 [~@14 d#2!2] [d#2 c#2 ~@6 f2 ~@5 d#2!2]!72 [d#2 c#2 ~@6 f2 ~@7]>")
  .s("gm_melodic_tom").gain(0.27)

// drums · kick
const kick = s("bd").struct("<~@35 x!7 [~@7 x] [x ~@2 x ~@2 x ~@3 x ~@5]!116>").gain(0.34)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@8 A@35 ~ B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@2 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3
  B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3
>`.pickRestart({
  A: "~ x ~@6", B: "~@7 x",
})).gain(0.19)

// drums · snare
const snare = s("sd").struct("<~@43 [~ x ~ x]!116>").gain(0.39)

// drums · low tom
const low_tom = s("lt").struct("<~@8 x!35 ~@116>").gain(0.19)

// drums · hihat
const hihat = s("hh").struct("<~@43 [x!8]!116>").gain(0.29)

// drums · mid tom
const mid_tom = s("mt").struct("<[x ~@2 x!4 ~@2 x!4 ~@2 x]!43 ~@116>").gain(0.1)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@35
  [x ~@2 x ~@2 x ~@3 x ~@2 x ~@2]
  [x ~@2 x ~@2 x ~@3 x ~ x ~@3]
  [x ~@2 x ~@2 x ~@2 x ~@2 x ~@3]!5
  [x ~@2 x ~@2 x ~@2 x ~@6]
  ~@116
>`).gain(0.05)

// drums · china
const china = s("cr").struct("<~@11 [~@7 x] ~@147>").gain(0.1)

// drums · tambourine
const tambourine = s("tb").struct("<~@43 [~ x ~ x ~ x ~ x]!116>").gain(0.29)

// drums · shaker
const shaker = s("sh").struct("<~@35 [x!16]!8 ~@116>").gain(0.1)

stack(
  bass, bass_soft, bass_2, timpani, timpani_soft, lead_5_charang, lead_5_charang_soft, string_ensemble_2, whistle,
  whistle_soft, pad_new_age, pad_halo, melodic_tom, kick, kick_soft, snare, low_tom, hihat, mid_tom, open_hat, china,
  tambourine, shaker
)

More by Depeche Mode