Strudelify

One Step Beyond

Madness

KeyC minorTempo170 bpm
0:00/0:00
// One Step Beyond — Madness
// 170 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A B A@3 B A@3 B A@2 C@4 A B A@10 C@4 A@4 C@4 A B A@3 B A@2 C@4 A B A@3 B A@2 C@4 A B A B A B A B A B A B D ~
>`.pickRestart({
  A: "~@2 [g3,c4,eb4]@2 ~@2 [g3,c4,eb4] ~@3 [g3,c4,eb4]@2 ~@2 [g3,c4,eb4] ~", // Cm
  B: "~@2 [ab3,c4,f4]@2 ~@2 [ab3,c4,f4] ~@3 [ab3,c4,f4]@2 ~@2 [ab3,c4,f4] ~", // Fm
  C: "~@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4] ~@3 [g3,b3,d4]@2 ~@2 [g3,b3,d4] ~", D: "g3",
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · drawbar organ
const drawbar_organ = note(`<
  ~ A B A@3 B A@3 B A@2 C@4 A B A@10 C@4 A@4 C@4 A B A@3 B A@2 C@4 A B A@3 B A@2 C@4 A B A B A B A B A B A B D ~
>`.pickRestart({
  A: "~@2 [g4,c5]@2 ~@2 [g4,c5] ~@3 [g4,c5]@2 ~@2 [g4,c5] ~", // C5
  B: "~@2 [f4,c5]@2 ~@2 [f4,c5] ~@3 [f4,c5]@2 ~@2 [f4,c5] ~", // F5
  C: "~@2 [g4,d5]@2 ~@2 [g4,d5] ~@3 [g4,d5]@2 ~@2 [g4,d5] ~", D: "[bb4,d5]",
})).s("gm_drawbar_organ").gain(0.12)

// bass · fretless bass
const bass = note(`<
  ~ A B A@3 B A@3 B A@2 C@3 D A B A@10 C@3 D A@4 C@3 D A B A@3 B A@2 C@3 D A B A@3 B A@2 C@3 D A B A B A B A B A B A B
  ~@2
>`.pickRestart({
  A: "c2 eb2 g2 eb2", B: "f2 ab2 c3 ab2", C: "g1@2 b1@2 d2@2 b1 d2", D: "g2 f2 eb2 d2",
})).s("gm_fretless_bass").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!76 x ~>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!76 ~@2>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!76 x ~>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~ [x!2]!76 x ~>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@77 x ~>").gain(0.4)

// drums · ride bell
const ride_bell = s("rd").struct("<~@77 x ~>").gain(0.4)

stack(electric_guitar_clean, drawbar_organ, bass, kick, snare, hihat, open_hat, high_tom, ride_bell)

More by Madness