Strudelify

Barrel Of A Gun

Depeche Mode

KeyE minorTempo83 bpm
0:00/0:00
// Barrel Of A Gun — Depeche Mode
// 83 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(83/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 · electric bass pick · "Dot Bass"
const bass = note(`<
  A@26 B C B C ~ D ~@6 A@20 B C B C ~ D ~@2 A E F G A E F G A E F H B C B C ~ D ~@2 A E F G A E F G A E F G A E F G A@2
  I
>`.pickRestart({
  A: "e2!16", B: "e2@4 e2@4 e2@3 ~ e2@3 ~", C: "e2@3 ~ e2@3 ~ e2@3 ~ e2@2 ~@2", D: "~ e2!15", E: "a2!8 g2!8",
  F: "f2!16", G: "c2!8 b2!8", H: "~@9 c2!7", I: "e2 ~@15",
})).s("gm_electric_bass_pick").gain(0.36).pan(0.2)

// bass · electric bass pick · "Dot Bass" · soft notes
const bass_soft = note("<~@30 A B C D ~@3 E ~@24 A B C D ~@11 F ~@4 A B C D ~@19>".pickRestart({
  A: "~@8 e2!8", B: "e2 ~@15", C: "a2!16", D: "g2!8 f#2!8", E: "e2!16", F: "c2!9 ~@7",
})).s("gm_electric_bass_pick").gain(0.24).pan(0.2)

// other · distortion guitar · "Guit sling"
const distortion_guitar = note("<~ A@3 ~@38 B@3 ~@60>".pickRestart({
  A: "e4 [g4,b4] [e4,e5] e4 [g4,b4] [e4,e5] e4 [g4,b4] [e4,e5] e4 [g4,b4] [e4,e5] e4 [g4,b4] [e4,e5] e4", // G E G E G E G E …
  B: "[~@8 c#4@3 c#4@10 ~@11 c#4@3 c#4@7 a#4 ~ c#5 d5 e5 ~, ~@2 f#4@5 ~@19 f#4@5 ~@17, ~@5 g4@6 ~@18 g4@5 ~@14]/3",
})).s("gm_distortion_guitar").gain(0.1).pan(0.3)

// other · pad warm · "Pad 2"
const pad_warm = note("<A@10 ~@55 B@5 C@4 D@4 ~@8 C@16 E@2 ~>".pickRestart({
  A: "[d4,d5]/2", B: "[~@13 e4@16 a4@8 g4@8 f4@16 c5@8 b4@8 ~@3]/5", C: "[~@13 a4@8 g4@8 f4@16 c5@8 b4@8 ~@3]/4",
  D: "[~@13 a4@8 g4@8 ~@3 c3@30 ~@2, ~@29 f4@16 ~@19]/4", E: "[~@13 a4@8 ~@11]/2",
})).s("gm_pad_warm").gain(0.34).pan(0.2)

// bass · electric bass finger · "Bass"
const bass_2 = note(`<
  ~@6 A B A B A B A B A B A B A B A B A B A B C@6 D E F@4 C@8 A B A B A B A B A B A B C@6 D E G H I J G H I J G H I K
  C@6 D E G H I J G H I J G H I J G H I J G@2 L
>`.pickRestart({
  A: "e1@5 ~@2 d1 e1 g1 e1@2 ~@2 d1 ~", B: "e1@7 d1 e1 g1 e1@5 ~", C: "e1 ~ e1!2 e2 e1 ~ e1 ~ e2 e1 d1@2 ~ e2 ~",
  D: "a1 ~ a1@4 ~ a1!2 ~ a1@5 a1", E: "g1 ~ g1@4 ~ g1 f#1 ~ f#1@5 ~", F: "e1/2", G: "e1@6 ~ d1 e1 g1 e1@2 e1 ~ e1!2",
  H: "a1@3 ~ a1@3 a1 g1 ~ g1@4 ~ g1", I: "f1 ~ f1@4 ~ f1!2 ~ f1@4 ~ f1", J: "c2 ~ c2@4 ~ c2 b1 ~ b1@5 b1", K: "c1",
  L: "e1 ~@7",
})).s("gm_electric_bass_finger").gain(0.54)

// bass · electric bass finger · "Bass" · soft notes
const bass_soft_2 = note(`<
  ~@6 A B A B A B A B A B A B A B A B A B A B ~@9 C@3 ~@8 A B A B A B A B A B A B ~@47
>`.pickRestart({
  A: "e2@5 ~@2 d2 e2 g2 e2@2 ~@2 d2 ~", B: "e2@7 d2 e2 g2 e2@5 ~", C: "[e2@47 ~]/3",
})).s("gm_electric_bass_finger").gain(0.36)

// other · agogo · "Kling"
const agogo = note("<~@13 A ~@28 B@2 ~@25 C@2 ~@2 C@2 ~@2 D ~@11 C@2 ~@2 C@2 ~@2 E@2 ~@2 C@2 ~@2>".pickRestart({
  A: "~@7 e6!5 ~@4", B: "[~@2 f#5@3 g5@2 ~ c#5@3 c#5@10 ~@11]/2",
  C: "[~@2 [c5,c6]@4 [g5,g6]@4 [b4,b5]@4 [f#5,f#6]@5 ~@13]/2", D: "~ f5 e5 f5 e5 f5 e5 f5",
  E: "[~@2 [c5,c6]@4 [b4,b5]@4 [g5,g6]@4 [e5,e6]@5 ~@13]/2", // C B G E
})).s("gm_agogo").gain(0.16).pan(0.6)

// other · agogo · "Kling" · soft notes
const agogo_soft = note("<~@12 A B C ~@26 D ~ E F ~@31 G H ~@27>".pickRestart({
  A: "~ d7 g#6@2 ~ f6@2 ~ e6@3 ~@5, e7@2 ~@2 d#6@2 ~ d6@2 ~@7", B: "~@2 e6!5 ~@5 e6!4", C: "e6 ~@15",
  D: "~@13 c#5 [d5,d#5] [c#5,e5]", E: "~@10 f#5@3 g5@3", F: "c#5@3 c#5@7 ~@6", G: "~@4 e5 f5 e5 f5", H: "e5 ~@7",
})).s("gm_agogo").gain(0.07).pan(0.6)

// chords · distortion guitar · "Dist Guitar"
const distortion_guitar_2 = note(`<
  ~@14 A B A B A B A B A B A B C@2 D E D F G H ~@4 C@2 D E C@2 D E A B A B A B A B A B A B C@2 D E D F G H D I J K D I J
  K D I J ~ C@2 D E D F G H D I J K D I J K D I J K D I J K D@2 L
>`.pickRestart({
  A: "[e3,e4] [e3,d4,e5] e4!2 d5 e4!2 [d3,d4,b4] [e3,e4] [g3,d4,d5] [e3,b3,e4] e4 b4 e4 d5 [d3,e4], ~@4 [e3,g4]@3 ~@5 [e3,a3]@3 ~", // E E7 G E G5 E5 Dsus2 Em …
  B: "[e3,e4] [e3,d4,e5] [e3,e4] e4 d5 e4!2 [e3,d4,e5] [d3,e4] [g3,d4,e4] [e3,b3,g5] e4 [e4,e5] ~ d5 e4, ~@4 [e3,g4]@3 ~@5 [e3,a4]@3 ~, ~@13 e4@2 ~", // E E7 E E7 Dsus2 Em7 Em E …
  C: "[e2@26 ~ d2@2 ~ e3 ~]/2", D: "e2", E: "~ e3 e2 e2@7 ~ d2@2 ~ e3 ~, e2 ~@7",
  F: "~ e3 e2 e2@2 e2@5 ~ d2@2 ~ e3 ~, e2 ~@7", G: "a2 a3 a2!2 a4 a2 a3 a2 a3 a2 a3 a2 a4 a2 a3 a2",
  H: "g2 g3 g2!2 g3 g2 g4 g2 g3 f#2 f#3 f#2 f#3 f#2 f#4 ~", I: "a2 g2", J: "f2", K: "c3 b2", L: "e2@3 ~@13",
})).s("gm_distortion_guitar").gain(0.06).pan(0.6)

// other · string ensemble 2 · "MMmm"
const string_ensemble_2 = note("<~@17 A@5 ~@27 B@6 ~@50>".pickRestart({
  A: "[~@14 a2@12 g2@2 e2@11 ~@7 a2@12 g2@2 e2@11 ~@9]/5", B: "[~@14 a2@12 g2@2 e2@11 ~@9]/3",
})).s("gm_string_ensemble_2").gain(0.59).pan(0.6)

// other · string ensemble 1 · "String"
const string_ensemble_1 = note("<~@26 A@2 B@4 C@2 ~@24 A@2 D@2 E@2 C@2 ~@10 F G A@2 D@2 E@2 C@2 ~@19>".pickRestart({
  A: "[d6@8 c#6@2 d6@2 c#6 ~ c#6@4 b5 ~ b5@11 ~]/2",
  B: "[d6@8 c#6@2 d6@2 c#6@2 c#6@4 b5@13 d6@9 c#6@2 d6@2 c#6 ~ c#6@4 b5@2 b5@11 ~]/4",
  C: "[a5@5 ~ a5@4 g5@2 b5@19 ~]/2", D: "[d6@4 c#6 d6 c#6 c#6@2 b5@7]/2",
  E: "[d6@8 c#6@2 d6@2 c#6 ~ c#6@4 b5@2 b5@11 ~]/2", F: "~@4 e5 f5 e5 f5", G: "e5 f5 e5 f5 e5 f5 e5 f5",
})).s("gm_string_ensemble_1").gain(0.28)

// drums · kick
const kick = s("bd").struct("<~@10 [x ~ x ~@5 x ~ x ~@4 x]!67 x [x ~ x ~@5 x ~ x ~@4 x]!26 x>").gain(0.8)

// drums · clap
const clap = s("cp").struct("<~@37 [~@7 x ~ x ~ x!2 ~ x ~] ~@67>").gain(0.24)

// drums · snare
const snare = s("sd").struct("<~@9 [~@3 x] [~ x ~ x]!67 [~@11 x!2 ~ x!2] [~ x ~ x]!26 x>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@10 [x!8]!66 [x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2] x [x!8]!26 x>").gain(0.72)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@10
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!66
  ~@2
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!26
  ~
>`).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@35
  [~@2 x ~@2 x ~@3 x ~@2 x ~@2 x]
  [~@2 x ~@2 x ~@4 x ~@2 x ~@2]
  [x ~@2 x ~@12]
  ~@39
  x
  ~@27
>`).gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@34 A ~@10 B ~@20 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2>".pickRestart({
  A: "x", B: "~@3 x",
})).gain(0.64)

stack(
  bass, bass_soft, distortion_guitar, pad_warm, bass_2, bass_soft_2, agogo, agogo_soft, distortion_guitar_2,
  string_ensemble_2, string_ensemble_1, kick, clap, snare, hihat, hihat_soft, open_hat, crash
)

More by Depeche Mode