Strudelify

Ignition

R. Kelly

KeyA♭ majorTempo132 bpm
0:00/0:00
// Ignition — R. Kelly
// 132 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 17 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/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.

// bass · acoustic guitar nylon · "Kik"
const bass = note("<~@4 A B C D A B E D A B E F G>".pickRestart({
  A: "ab1 ~@2 b1 c2 ~ ab1 ~", B: "db2 c2", C: "bb1@2 ~ bb1 ~@2 bb1 ~", D: "eb2@3 ~@3 eb2@2 eb2@2 ~@2 eb1@4",
  E: "bb1@2 ~ bb1!2 ~ bb1 ~", F: "eb2 eb3 db2 db3 c2 c3 db2 db3", G: "eb2 eb3 db2 db3 c2 c3 eb2 eb3",
})).s("gm_acoustic_guitar_nylon").gain(0.8)

// chords · piano
const piano = note("<~@4 A B C D A B C D A B C E@2>".pickRestart({
  A: "[ab3,c4,eb4]@3 ~", B: "[ab3,db4,f4]@7 ~ [ab3,c4,eb4]@7 ~", C: "[ab3,bb3,db4]@13 ~@3", D: "[ab3,db4,f4]@3 ~",
  E: "[ab3,db4,f4]@7 ~", // Db
})).s("gm_piano").gain(0.8)

// chords · lead 3 calliope · Cm Bbm Cm Bbm Cm Bbm
const lead_3_calliope = note(`<
  ~@5
  [~@2 c5@2 c5 [c5,eb5] ~@4 bb4@2 bb4 [bb4,db5] ~@2]
  ~@3
  [~@2 c5@2 c5 [c5,eb5] ~@4 bb4@2 bb4 [bb4,db5] ~@2]
  ~@3
  [~@2 c5@2 c5 [c5,eb5] ~@4 bb4@2 bb4 [bb4,db5] ~@2]
  ~@3
>`).s("gm_lead_3_calliope").gain(0.8)

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

// drums · clap
const clap = s("cp").struct("<[~ x]!3 ~ [~ x]!3 ~ [~ x]!3 ~ [~ x]!3 ~@2>").gain(0.8)

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

// drums · hihat
const hihat = s("hh").struct("<A ~@3 B C D E B C D E B C D E@2>".pickRestart({
  A: "~ x ~@14", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x", D: "x!8",
  E: "x ~ x!3 ~ x ~ x ~ x ~ x ~@2 x",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A ~ A ~ A ~ A ~ A ~ A@2>".pickRestart({
  A: "~@7 x",
})).gain(0.8)

// drums · shaker
const shaker = s("sh").struct("<~@2 A ~@3 A ~@3 A ~@3 B ~@2>".pickRestart({
  A: "~@2 x!2 ~@4", B: "~@2 x!3 ~@3",
})).gain(0.8)

stack(bass, piano, lead_3_calliope, kick, clap, snare, hihat, open_hat, shaker)

More by R. Kelly