Strudelify

Going Out of My Head

Fatboy Slim

KeyG majorTempo128 bpm
0:00/0:00
// Going Out of My Head — Fatboy Slim
// 128 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "tk2" distortion guitar (copy of ch 1 "tk1" overdriven guitar)
// note: Full arrangement: all 129 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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 · overdriven guitar · "tk1"
const overdriven_guitar = 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 ~@8 A B A B A B A B A B A B A B A B ~@15 C A B A B A B A B A B A B A B
  A B ~@8 A D A D A D A D A B A B A B A B E@2 A D A D A D A D E@2 A D A D A D A D ~@5
>`.pickRestart({
  A: "[g3,d4,g4,b4]@2 ~@2 [f3,c4,f4,a4]!2 ~@2", B: "[c3,g3,c4,g4]@2 ~@2 [d2,d3,a3,d4] [d2,d3,a3,d4]@2 [d2,d3,a3,d4]",
  C: "~@5 [d2,d3,a3,d4]!3", D: "[c3,g3,c4,g4]@2 ~@2 [g2,d3,g3] [g2,d3,g3]@2 [g2,d3,g3]",
  E: "d4@2 d#4 ~ d4@2 d#4 ~ d4@2 d#4 ~ d4@2 d#4 ~",
})).s("gm_overdriven_guitar").gain(0.51).pan(0.3)

// bass · fretless bass · "tk3"
const bass = note(`<
  ~@8 A B A B A B A B A B A B A B A B A C A C A C A C ~@8 A B A B A B A B ~@24 A B A B A B A B A C A C A C A C ~@4 A C A
  C A B A B A B A B D@2 A C A C A C A C D@2 A C A C A C A C ~@5
>`.pickRestart({
  A: "g2@2 ~@2 f2!2 ~@2", B: "c2@2 ~@2 d2 d2@2 d2", C: "c2@2 ~@2 g1 g1@2 g1",
  D: "d2@2 d#2 ~ d2@2 d#2 ~ d2@2 d#2 ~ d2@2 d#2 ~",
})).s("gm_fretless_bass").gain(0.51).pan(0.2)

// bass · slap bass 2 · "tk4"
const bass_2 = note(`<
  ~@8 A B A B A B A B A B A B A B A B A C A C A C A C ~@8 A B A B A B A B ~@24 A B A B A B A B A C A C A C A C ~@4 A C A
  C A B A B A B A B ~@2 D E D E D E D E ~@2 D E D E D E D E ~@5
>`.pickRestart({
  A: "[g1,g2]@2 ~@2 [f1,f2]!2 ~@2", B: "[c1,c2]@2 ~@2 [d1,d2] [d1,d2]@2 [d1,d2]",
  C: "[c1,c2]@2 ~@2 [g0,g1] [g0,g1]@2 [g0,g1]", D: "g2@2 ~@2 f2!2 ~@2", E: "c2@2 ~@2 g1 g1@2 g1",
})).s("gm_slap_bass_2").gain(0.51).pan(0.8)

// other · contrabass · "tk6"
const contrabass = note(`<
  ~@32 A B A B A B A B A B A B A B A B ~@48 A B A B A B A B ~@2 A B A B A B A B ~@15
>`.pickRestart({
  A: "~@4 f4 g4@2 g4", B: "c5 b4 g4 g4@2 ~@3",
})).s("gm_contrabass").gain(0.26)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A@2 B@24 ~@6 A@2 B@15 C B@4 C@2 A@2 ~@6 A@2 B@16 ~@6 A@2 B@8 C@2 B@8 C@2 B@8 C@2 A@2 D
>`.pickRestart({
  A: "x!8", B: "x ~@3 x!2 ~ x", C: "x!4", D: "x",
})).gain(0.72)

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

// drums · clap
const clap = s("cp").struct("<~@8 A@24 ~@8 A@15 ~ A@4 ~@12 A@16 ~@8 A@8 ~@2 A@8 ~@2 A@8 ~@5>".pickRestart({
  A: "~@4 x ~@2 x ~ x ~@2 x ~@3",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@6 A@2 B@24 ~@6 A@2 B@15 C B@4 C@2 A D ~@6 A@2 B@16 ~@6 A@2 B@8 C@2 B@8 C@2 B@8 C@2 A D E
>`.pickRestart({
  A: "x!8", B: "x ~@3 x!2 ~@2", C: "x!4", D: "x!5 ~@3", E: "x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@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 ~@8 A B A B A B A B A@7 C A@4 C@2 ~@10 A B A B A B A B A B A B A B
  A B ~@8 A B A B A B A B C@2 A B A B A B A B C@2 A B A B A B A B C@2 ~@3
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "~ x ~ x ~ x ~ x",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A@7 B A@4 B@2 C D ~@8 A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~@9 A ~ A ~ A ~ A ~ B@2 A ~ A ~ A ~ A ~ B@2 A ~ A ~ A ~ A ~ B@2 C D A
>`.pickRestart({
  A: "x", B: "x!4", C: "x!8", D: "x!5 ~@3",
})).gain(0.72)

// drums · guiro
const guiro = s("guiro:0").struct("<~@68 [x ~ x ~ x!3 ~]!4 ~@20 [x ~ x ~ x!3 ~]!4 ~@33>").gain(15.21)

// drums · shaker
const shaker = s("sh").struct("<~@68 [x ~ x ~ x!3 ~]!4 ~@20 [x ~ x ~ x!3 ~]!4 ~@33>").gain(0.72)

stack(overdriven_guitar, bass, bass_2, contrabass, kick, snare, clap, low_tom, hihat, open_hat, guiro, shaker)

More by Fatboy Slim