Strudelify

Breath

The Prodigy

KeyE♭ minorTempo130 bpm
0:00/0:00
// Breath — The Prodigy
// 130 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 1 ""Breathe"" electric bass pick (copy of ch 2 fretless bass); ch 4 harpsichord (copy of ch 3 shanai); ch 11 synth brass 2 (copy of ch 3 shanai)
// note: Full arrangement: all 191 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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
const bass = note(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B C D A B C D A B C D A B C D A B A B E@8 A B A B A B A B C D A B C
  D A B C D A B C D A B A B A B A B A B A B A B A B A B C D A B C D A B C D A B C D A B F ~@33 A B A B A B A B A B A B A
  B A B A B A B A B A B C D A B C D A B C D A B C D A B ~@3
>`.pickRestart({
  A: "d2 eb2!7 d2 eb2!7", B: "d2 eb2!7 d2 eb2!3 d2 eb2!3", C: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  D: "a1 ~ a1 ~ a1 ~ a1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~", E: "eb2/8", F: "eb2",
})).s("gm_fretless_bass").gain(0.37).pan(0.9)

// chords · lead 8 bass lead · "Beach Hunt"
const lead_8_bass_lead = note("<~@13 A@3 ~@5 A@3 ~@5 A@3 ~@55 A@3 ~@5 A@3 ~@55 A@3 ~@5 A@3 ~@5 A@3 ~@19>".pickRestart({
  A: "[~ [db5,gb5]@4 ~]/3", // Gb5
})).s("gm_lead_8_bass_lead").gain(0.16)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@32 A B C@2 A B C@2 A B C@2 A B C@2 ~@18 A B C@2 A B C@2 A B C@2 A B C@2 ~@16 A B C@2 A B C@2 A B C@2 A B C@2 ~@58 A
  B C@2 A B C@2 A B C@2 A B C@2 ~@3
>`.pickRestart({
  A: "[bb2,bb3]", B: "[a2,a3] [ab2,ab3]", C: "[eb2,gb3]/2",
})).s("gm_distortion_guitar").gain(0.37).pan(0.2)

// bass · synth bass 2
const bass_2 = note(`<
  ~@32 A B C@2 A B C@2 A B C@2 A B C@2 ~@18 A B C@2 A B C@2 A B C@2 A B C@2 ~@16 A B C@2 A B C@2 A B C@2 A B C@2 ~@58 A
  B C@2 A B C@2 A B C@2 A B C@2 ~@3
>`.pickRestart({
  A: "[bb1,bb2]", B: "[a1,a2] [ab1,ab2]", C: "[eb1,eb2]/2",
})).s("gm_synth_bass_2").gain(0.37).pan(0.9)

// other · electric guitar clean · "and"
const electric_guitar_clean = note(`<
  ~@50 A B A B A B A B A B A B A B A B ~@51 C A B A B A B A B A B A B A B A B A B A B A D ~@51
>`.pickRestart({
  A: "eb3@2 eb3@2 eb3 eb3@2 eb3", B: "eb3@3 eb3 eb3@2 eb3@3 eb3 eb3@2 eb3@2 eb3!2",
  C: "~@6 eb3@3 eb3 eb3@2 eb3@2 eb3!2", D: "eb3",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.2)

// other · electric guitar clean · "and" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@114
  [eb3@2 eb3@2 eb3 eb3@2 eb3]
  [eb3@3 eb3 eb3@2 eb3@3 eb3 eb3@2 eb3@2 eb3!2]
  [eb3@2 eb3@2 eb3 eb3@2 eb3]
  [eb3@3 eb3 eb3@2 ~@10]
  ~@73
>`).s("gm_electric_guitar_clean").gain(0.07).pan(0.2)

// other · overdriven guitar · "AmMoNiC"
const overdriven_guitar = note(`<
  ~@50 A B A B A B A B A B A B A B A B ~@51 C A B A B A B A B A B A B A B A B A B A B A D ~@51
>`.pickRestart({
  A: "gb3@2 gb3@2 gb3 eb3@2 gb3", B: "f3@3 f3 f3@2 eb3@3 eb3 eb3@2 d3@2 eb3!2", C: "~@6 eb3@3 eb3 eb3@2 d3@2 eb3!2",
  D: "eb3",
})).s("gm_overdriven_guitar").gain(0.13).pan(0.9)

// other · overdriven guitar · "AmMoNiC" · soft notes
const overdriven_guitar_soft = note(`<
  ~@114
  [gb3@2 gb3@2 gb3 eb3@2 gb3]
  [f3@3 f3 f3@2 eb3@3 eb3 eb3@2 d3@2 eb3!2]
  [gb3@2 gb3@2 gb3 eb3@2 gb3]
  [f3@3 f3 f3@3 ~@9]
  ~@73
>`).s("gm_overdriven_guitar").gain(0.06).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B@7 C B@7 C B@7 D B@7 C B@7 C B C ~@7 A B@7 C B@7 C B@7 C B@7 C B@7 D B@7 C B@7 C ~@8 E@17 F ~@7 A B@7 C B@7 C
  B@7 D B@7 C B@7 C G H I
>`.pickRestart({
  A: "~@4 x ~@3 x!2 ~ x ~ x ~ x", B: "x ~ x ~@4 x ~@2 x ~@4 x", C: "x ~ x ~@5 x!2 ~@2 x!2 ~ x",
  D: "x ~ x ~ x ~@3 x!2 ~ x ~ x ~ x", E: "x!2 ~@2 x!2 ~@2", F: "x ~ x ~ x!2 ~ x", G: "x!2 ~ x", H: "~ x ~@3 x ~@9 x",
  I: "~@4 x ~@4 x ~@6",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B@7 C B@7 C B@7 A B@7 C B@7 C B C ~@7 A B@7 C B@7 C B@7 C B@7 C B@7 A B@7 C B@7 C ~@8 D@17 E F ~@6 A B@7 C B@7 C
  B@7 A B@7 C B@7 C G H I
>`.pickRestart({
  A: "~@4 x ~@2 x!3 ~ x ~ x ~ x", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@4 x ~@3 x!2 ~ x!3 ~ x",
  D: "~@4 x ~@2 x ~@4 x ~@2 x", E: "x ~@3 x ~@2 x!2 ~ x ~@3 x ~", F: "x", G: "~@8 x ~@6 x", H: "~@2 x ~@2 x ~@2",
  I: "~ x ~@5 x",
})).gain(0.64)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@8 [~@9 x ~@6]!42 ~@8 [~@9 x ~@6]!56 ~@34 [~@9 x ~@6]!40 ~@2 [~@7 x]>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@42 ~@8 A@56 ~@34 A@40 B C D>".pickRestart({
  A: "x!8", B: "x!4", C: "~ x ~@3 x ~@4 x ~@4 x", D: "~@4 x ~@4 x ~@6",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@188 [~@3 x] [~@5 x ~@2] ~>").gain(0.64)

// drums · cowbell
const cowbell = s("cb").struct("<~@188 [~ x ~@2] [~@5 x ~@10] ~>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A@3 B A@3 C A@3 B A@3 C A@3 B A@3 C A@3 B A@3 C A@3 B A@3 C A C ~@8 D ~@2 E D ~@3 A@3 B A@3 C A@3 B A@3 C A@3 B
  A@3 C A@3 B A@3 C A@3 B A@3 C A@3 B A@3 C ~@26 D ~@7 A@3 B A@3 C A@3 B A@3 C A@3 B A@3 C A@3 B A@3 C A@3 B A@3 C F ~@2
>`.pickRestart({
  A: "x!2 ~ x", B: "x ~ x ~@3 x!2", C: "x!2 ~@2", D: "x", E: "~@6 x!2", F: "~ x",
})).gain(0.64)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@114 x ~@73 x [~ x ~@13 x] [~@7 x]>").gain(7.52)

// drums · bongos
const bongos = s("bongo:18").struct("<~@190 [~@7 x]>").gain(1.68)

// drums · congas
const congas = s("conga:33").struct("<~@122 [x!2 ~@2 x!2 ~@2]!17 x ~@51>").gain(0.77)

// drums · ht
const ht = s("ht").struct("<~@122 [~@4 x ~@2 x ~@4 x ~@2 x]!17 x ~@51>").gain(0.24)

stack(
  bass, lead_8_bass_lead, distortion_guitar, bass_2, electric_guitar_clean, electric_guitar_clean_2, overdriven_guitar,
  overdriven_guitar_soft, kick, snare, pedal_hat, open_hat, tambourine, cowbell, crash, vibraslap, bongos, congas, ht
)

More by The Prodigy