Strudelify
One Love cover art

1994 · Music for the Jilted Generation

One Love

The Prodigy

KeyD♭ majorTempo148 bpm
0:00/0:00
// One Love — The Prodigy
// 148 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 138 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(148/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.

// chords · rock organ · "Organ"
const rock_organ = note(`<
  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 ~@24 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 ~@20 A B A B A B A B A B A B A B A B A ~
>`.pickRestart({
  A: "~@2 [db5,gb5,ab5] ~ [db5,gb5,ab5]@2 ~ [db5,gb5,ab5]@2 [db5,gb5,ab5]@2 ~ [db5,gb5,ab5] ~ [db5,gb5,bb5] ~", // Dbsus4 Gb
  B: "[db5,gb5,bb5] ~ [db5,gb5,ab5] ~ [db5,gb5,ab5]@2 ~ [db5,gb5,ab5] ~ [db5,e5,ab5]@2 ~ [db5,e5,ab5] ~ [db5,e5,ab5] ~", // Gb Dbsus4 Dbm
})).s("gm_rock_organ").gain(0.46)

// bass · synth bass 2 · "Bass"
const bass = note(`<
  ~@18 A B C D C D C D A D C D C D C B ~@16 A B C D C D C D ~@26 A B C D C D C D A D C D C D C B ~@26 A B C D C D C D A
  D C ~
>`.pickRestart({
  A: "gb1 ~ gb1 ~ gb1 ~@2 gb1@2 ~ gb1 ~ gb1 ~ gb1 ~", B: "gb1 ~ db2 ~ db2@2 ~ db2@2 db2!2 ~ db2 ~ db2 ~",
  C: "gb1 ~ gb1 ~ gb1@2 ~ gb1@2 ~ gb1 ~ gb1 ~ gb1 ~", D: "gb1 ~ db2 ~ db2@2 ~ db2 ~ db2!2 ~ db2 ~ db2 ~",
})).s("gm_synth_bass_2").gain(0.58)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~ A B@10 C@4 B@2 ~@40 B@2 C@4 B@14 C@4 B@2 ~@16 B@2 C@4 B@4 C@4 B@4 C@4 B@6 C@4 B@4 D@2
>`.pickRestart({
  A: "~ e6", B: "[gb6@3 e6]/2", C: "[gb6@23 ~ e6@8]/2", D: "[gb6@23 ~@9]/2",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.4)

// other · string ensemble 1 · "Strings"
const string_ensemble_1_2 = note("<~@10 A@8 ~@58 A@8 ~@28 A@8 ~@6 A@8 ~@4>".pickRestart({
  A: "[db1,db2]/8", // Db
})).s("gm_string_ensemble_1").gain(0.64).pan(0.6)

// other · shamisen · "Sham"
const shamisen = note("<~@27 A ~ A ~ A ~ A B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C ~@35 A ~ A ~ A ~ A ~@38>".pickRestart({
  A: "~@7 db2@2 db2!6 ~", B: "db3@2 eb3!2 eb3@2 db3@2 eb3!2 eb3@2 db3@2 eb3@2",
  C: "db3@2 db3!2 db3@2 db3@2 db3!2 db3@2 db3@2 db3@2",
})).s("gm_shamisen").gain(0.24).pan(0.6)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1_3 = note("<~@100 A@8 B@2 C D E@8 ~@18>".pickRestart({
  A: "[~@2 e4 gb4, db3]/8", B: "ab4/2", C: "e5", D: "b4", E: "[~ b4@3, db5]/8",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A@24 B ~@7 A@16 ~@18 A@24 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ A@11 ~
>`.pickRestart({
  A: "x!4", B: "x",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct(`<
  ~@10 A@24 ~@8 A@16 ~@14 A@28 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ A@11 ~
>`.pickRestart({
  A: "x!2 ~@2 x ~@3 x!2 ~@2 x ~@3", B: "x",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@9 A B@24 ~@8 B@16 ~@18 B@24 ~@26 B@11 ~>".pickRestart({
  A: "~@12 x!4", B: "~ x ~ x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@10 A@24 ~@8 A@16 ~@14 B@4 A@24 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ A@11 ~
>`.pickRestart({
  A: "x!4", B: "~ x ~ x", C: "x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@10 A@24 ~@8 A@16 ~@18 A@24 ~@26 A@11 ~>".pickRestart({
  A: "x!2 ~ x",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@10 A@24 ~@8 A@16 ~@14 B@4 A@24 ~@26 A@11 ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~@3 x ~@2",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@10 A@24 ~@8 A@16 ~@18 A@24 ~@26 A@11 ~>".pickRestart({
  A: "~@7 x!5 ~@4",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@10 A ~@7 A ~@7 A ~@15 A ~@7 A ~@25 A ~@7 A ~@7 A ~@33 A ~@7 A ~@3>".pickRestart({
  A: "x",
})).gain(0.56)

// drums · congas
const congas = s("conga:18").struct("<~@10 A@24 ~@8 A@16 ~@18 A@24 ~@26 A@11 ~>".pickRestart({
  A: "x ~ x ~ x ~@2 x ~ x!4 ~ x ~",
})).gain(1.79)

// drums · shaker
const shaker = s("sh").struct("<~@10 A@24 ~@8 A@16 ~@18 A@24 ~@26 A@11 ~>".pickRestart({
  A: "x!16",
})).gain(0.48)

stack(
  rock_organ, bass, string_ensemble_1, string_ensemble_1_2, shamisen, string_ensemble_1_3, kick, rim, snare, hihat,
  low_tom, open_hat, mid_tom, crash, congas, shaker
)

More by The Prodigy