Strudelify
Eins Zwei Polizei cover art

1995 · Was Ist Das?

Eins Zwei Polizei

Mo-Do

KeyE minorTempo143 bpm
0:00/0:00
// Eins Zwei Polizei — Mo-Do
// 143 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(143/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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(`<
  ~@4 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C
  A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@8 A@2 B C A@2 B C
  A@2 B C A@2 B C ~@4
>`.pickRestart({
  A: "e1 e2 e1 e2 e1 e2 e1 e2", B: "g1 g2 g1 g2 g1 g2 g1 g2", C: "d1 d2 d1 d2 d1 d2 d1 d2",
})).s("gm_fretless_bass").gain(0.52)

// other · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note(`<
  ~@12 A@2 B C A@2 B C A@2 B C A@2 B C ~@16 A@2 B C A@2 B C ~@40 A@2 B C A@2 B C A@2 B C A@2 B C ~@28
>`.pickRestart({
  A: "e4 b4 g4 e5 b4 f#5 b4 g5", B: "b4 d5 f#5 g5 d5 a5 d5 b5", C: "a4 d5 a4 g5 d5 e5 f#5 d5",
})).s("gm_lead_8_bass_lead").gain(0.23).pan(0.7)

// other · synth bass 2 · "SYN BASS 2"
const synth_bass_2 = note("<~@21 A@2 B@2 A@2 ~@18 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@40 A@2 B@2 A@2 ~@29>".pickRestart({
  A: "[~@8 g4 ~ e4 ~ g4 ~ e4@5 ~@13]/2", B: "[~@8 g4 ~ e4 ~ f#4 ~ e4@5 ~@13]/2",
})).s("gm_synth_bass_2").gain(0.41).pan(0.6)

// chords · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@12 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@8 A@2 B C A@2 B
  C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@8 A@2 B C A@2 B C A@2 B C A@2 B C ~@4
>`.pickRestart({
  A: "[e2,g4]!16", B: "[e2,b4]!16", C: "[e2,a4]!16",
})).s("gm_lead_2_sawtooth").gain(0.33).pan(0.3)

// chords · lead 1 square · "SQUAREWAVE"
const lead_1_square = note(`<
  ~@36 A@2 B C A@2 B C ~@8 A@2 B C A@2 B C ~@17 D ~ E ~ D ~ E A@2 B C A@2 B C ~@32 F@2 G H F@2 G H ~@4
>`.pickRestart({
  A: "[e3,b4,e5] ~ [e3,b4,e5]@2 ~@2 [e3,b4,e5] ~ [e3,b4,e5] ~ [e3,b4,e5]@2 ~@4", // E5
  B: "[g3,d5,g5] ~ [g3,d5,g5]@2 ~@2 [g3,d5,g5] ~ [g3,d5,g5] ~ [g3,d5,g5]@2 ~@4", // G5
  C: "[d3,a4,d5] ~ [d3,a4,d5]@2 ~@2 [d3,a4,d5] ~ [d3,a4,d5] ~ [d3,a4,d5]@2 ~@4", D: "~@5 [b3,e4] [b4,e5] [b5,e6]",
  E: "~@5 [a3,d4] [a4,d5] [a5,d6]", F: "[b3,e4] [b4,e5] ~ [b4,e5] [b3,e4] [b4,e5] ~@2",
  G: "[d4,g4] [d5,g5] ~ [d5,g5] [d4,g4] [d5,g5] ~@2", H: "[a3,d4] [a4,d5] ~ [a4,d5] [a3,d4] [a4,d5] ~@2",
})).s("gm_lead_1_square").gain(0.26).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B A B A B A B ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A ~ A B A B A B A B A B
  A B A B A B A B A B A B A B
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@10 A@2 ~@14 A@2 B@14 A@2 ~@6 A@2 B@6 A@2 ~@14 A@2 ~@8 B@6 A@2 ~@6 A@2 B@6 A@2 ~@6 A@2 B@6 A@2 B@6 A@2 ~@4
>`.pickRestart({
  A: "x!16", B: "~@2 x ~@3 x!2",
})).gain(0.39)

// drums · hihat
const hihat = s("hh").struct(`<
  [~ x!3 ~ x!3 ~ x!3 ~ x!3]!4
  ~@4
  [x!4]!4
  [~ x!3 ~ x!3 ~ x!3 ~ x!3]!4
  [x!4]!92
  ~@4
  [x!4]!20
  ~@4
>`).gain(0.39)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[x!4]!4 ~@8 [x!4]!4 ~@120>").gain(0.19)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [~ x ~ x ~ x ~ x]!4 ~@4 [~ x ~ x ~ x ~ x]!92 ~@4 [~ x ~ x ~ x ~ x]!20 ~@4>")
  .gain(0.39)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~@3 A ~@3 A ~@15 A ~@3 A ~@3 A ~@7 A ~@15 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@11 A ~@7 A ~@7 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.39)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@52 [x!2 ~ x!2 ~ x ~]!8 ~@76>").gain(0.75)

stack(
  bass, synth_bass_1, synth_bass_2, lead_2_sawtooth, lead_1_square, kick, snare, hihat, hihat_soft, open_hat, crash,
  woodblocks
)

More by Mo-Do