Strudelify

Stripped

Rammstein

KeyD minorTempo95 bpm
0:00/0:00
// Stripped — Rammstein
// 95 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Piano" named as a piano, played on piano (its pad choir patch is not one)
// note: duplicate parts dropped: ch 5 "AltoSax" synth strings 2 (copy of ch 2 "AltoSax" synth strings 1); ch 6 "AltoSax" pad poly (copy of ch 2 "AltoSax" synth strings 1); ch 4 "SynthBass2" synth bass 1 (copy of ch 3 "SynthBass2" synth bass 2)
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95/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 · synth strings 1 · "AltoSax"
const synth_strings_1 = note(`<
  ~@12 A B C D E F D@2 G@3 H G@3 I@8 J@2 K L M J N L O@3 I O@3 I P@3 Q@4 I R S T@2 R S T@2 U@12 V@6 ~@12
>`.pickRestart({
  A: "~ a4 f4 a4@3 ~@2", B: "a4 g4 f4 a4@3 ~ d4", C: "a4 g4 f4 e4@3 ~ d4", D: "a4 g4 f4 e4@3 ~@2",
  E: "~ a4 f4 a4@3 ~ d4", F: "a4 g4 f4 a4@3 ~@2",
  G: "[[d4,f4,a4]@2 g4@2 [a3,d4,f4] g4@2 [d4,f4,a4]@3 g4@2 [bb3,d4,f4] g4@2 [bb3,d4,g4]@9]/3", // Dm Bb Gm
  H: "[f3,a3,d4]@2 d4@2 c4 [f3,a3,d4]@3 [f3,a3,d4]@2 d4@2 c4 [a3,c4,e4]@3", // Dm Am
  I: "d4@2 a4@2 g4 f4 c5 a4@3 a4@2 g4 f4 d4@2", J: "[d4,f4,a4] g4 [d4,f4] [d4,f4,a4]@3 ~ d4",
  K: "[d4,f4,a4] g4 [d4,f4] [a3,db4,e4]@3 ~ d4", L: "[d4,f4,a4] g4 [d4,f4] [a3,db4,e4]@3 f4 e4",
  M: "~ [d4,f4,a4] f4 [d4,f4,a4]@3 ~ d4", N: "[d4,f4,a4] g4 [d4,f4] [a3,db4,e4]@3 ~@2",
  O: "[[d4,f4,a4]@4 g4@4 [a3,d4,f4]@2 g4@4 [d4,f4,a4]@6 g4@4 [bb3,d4,f4]@2 g4@4 [bb3,d4,g4]@4 a4@2 g4 f4 c5 a4@3 a4@2 g4 f4 d4@2]/3", // Dm Bb Gm
  P: "[[d4,f4,a4]@2 g4@2 [a3,d4,f4] g4@2 [d4,f4,a4]@3 ~ g4 [d4,f4] a4@2 [bb3,d4,g4]@3 ~ d4 e4 [bb3,d4,f4]@3]/3", // Dm Gm Bb
  Q: "[[d4,f4,a4]@4 g4@4 f4@2 [d4,f4,a4]@4 [d4,g4]@6 d4@2 d4@2 e4@2 [d4,f4]@4 [d4,f4,a4]@6 g4@4 f4@2 [bb3,d4]@4 [bb3,d4,f4]@4 a4@2 g4 f4 c5 a4@3 a4@2 g4 f4 d4@2]/4", // Dm G5 Dm Bb
  R: "[d4,d5]@3 [e4,e5]@5", S: "[a4,a5]@3 [bb4,bb5]@5", T: "[c5,c6]@3 [f4,f5]@5",
  U: "[[d4,f4,a4]@2 g4@2 [a3,d4,f4] g4@2 [d4,f4,a4]@3 g4@2 [bb3,d4,f4] g4@2 [bb3,d4,g4]@4 d4 e4 [bb3,d4,f4]@2 [d4,f4,a4]@3 g4@2 f4 [d4,f4,a4]@2 g4]/4", // Dm Bb Gm Bb Dm
  V: "d4@2 d4@2 c4 d4@3 d4@2 d4@2 c4 d4@3",
})).s("gm_synth_strings_1").gain(0.2).pan(0)

// bass · synth bass 2 · "SynthBass2"
const bass = note(`<
  ~@4 A@8 B@2 C D B@2 C D E F G H E F G I@10 J@2 I@2 J@2 E F K L E F K L E F G M E F K L E F G M E F G M E F G M E F G M
  E F G M N@6 A@12
>`.pickRestart({
  A: "[d2,d3]/4", B: "~ d3 c4 a3 ~ d3 d4 ~, d2", C: "d3 ~ c4 a2@2 ~ e3 ~, d2@3 a1@5, ~ d3@2 ~@2 a2@3",
  D: "d3 ~ c4 a2@2 ~ f3 e3, d2@3 a1@5, ~ d3@2 ~@2 a2@3", E: "~@2 d3@2 c3 d3@3 d3@2 d3@2 c3 d3@3, c2",
  F: "~@2 d3@2 c3 d3@3 d3@2 d3@2 c3 d3@3, g1", G: "~@2 d3@2 c3 d3@3 d3@2 d3@2 c3 d3@3, bb1",
  H: "d3@2 d3@2 c3 d3@3 d3@2 d3@2 c3 d3@3, d2", I: "~@2 a3@2 g3 f3 c4 a3@3 a3@2 g3 f3 d3@2, d2, d3@7 ~",
  J: "~@2 a3@2 g3 f3 ~@4 a3@2 g3 f3 d3@2, [d2,d3]@3 [a1,a2]@5", K: "~@2 a3@2 g3 f3 c4 a3@3 a3@2 g3 f3 d3@2, bb1",
  L: "~@2 a3@2 g3 f3 c4 a3@3 a3@2 g3 f3 d3@2, d2", M: "~@2 d3@2 c3 d3@3 d3@2 d3@2 c3 d3@3, d2", N: "[d2,d3]/2",
})).s("gm_synth_bass_2").gain(0.26).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@26 [~@14 x!2] [x ~@2 x ~@3 x ~ x ~ x ~@2 x!2]!58 ~@12>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@27 [~ x ~ x]!58 ~@12>").gain(0.36)

// drums · hihat
const hihat = s("hh").struct(`<
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!59
  ~@7
  [~@14 x!2]
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!16
  ~@2
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!12
>`).gain(0.36)

// drums · open hat
const open_hat = s("oh").struct("<[x!4]!59 x ~@7 [x!4]!16 x ~ [x!4]!12>").gain(0.36)

stack(synth_strings_1, bass, kick, snare, hihat, open_hat)

More by Rammstein