Strudelify
The Bad Touch cover art

Hooray For Boobies

The Bad Touch

Bloodhound Gang

KeyE♭ majorTempo123 bpm
0:00/0:00
// The Bad Touch — Bloodhound Gang
// 122.9 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 13 "Picked Bs." electric bass pick (copy of ch 3 "Clean Gt." electric guitar clean); ch 4 "Polysynth" pad poly (copy of ch 6 "Harpsichord" harpsichord)
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 23 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(122.9/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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 1
const bass = note(`<
  ~@9 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B C D A B C D A B C D ~@8 A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "c2 [c2,c3] c2 [c2,c3] c2 [c2,c3] c2 [c2,c3]", B: "eb2 [eb2,eb3] eb2 [eb2,eb3] eb2 [eb2,eb3] eb2 [eb2,eb3]",
  C: "bb1 [bb1,bb2] bb1 [bb1,bb2] bb1 [bb1,bb2] bb1 [bb1,bb2]", // Bb
  D: "ab1 [ab1,ab2] ab1 [ab1,ab2] ab1 [ab1,ab2] ab1 [ab1,ab2]", // Ab
})).s("gm_synth_bass_1").gain(0.45)

// bass · electric bass finger · "Fingered Bs."
const bass_2 = note(`<
  ~@9 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B C D A B C D A B C D ~@8 A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "c2 c3 c2 c3 c2 c3 c2 c3", B: "eb2 eb3 eb2 eb3 eb2 eb3 eb2 eb3", C: "bb1 bb2 bb1 bb2 bb1 bb2 bb1 bb2",
  D: "ab1 ab2 ab1 ab2 ab1 ab2 ab1 ab2",
})).s("gm_electric_bass_finger").gain(0.22)

// other · electric guitar clean · "Clean Gt."
const electric_guitar_clean = note("<~@9 A B C D A B C D ~@32 A B C D A B C D ~@65>".pickRestart({
  A: "~@2 c3 ~ c3 ~ bb2 c3@3 eb3@2 ~@4", B: "~@2 f3 eb3 ~ c3 eb3@2", C: "~@4 bb3@2 g3 g3@3 f3@2 ~@2 bb2@2",
  D: "ab2@2 ~@2 f3@2 eb3@2 ~@2 c3@2 eb3 f3@2 ~",
})).s("gm_electric_guitar_clean").gain(0.6)

// chords · harpsichord
const harpsichord = note(`<
  ~@9 A B C D A B C D ~@15 D A B C D A B C D A B C D A B C D A B C D A B C D ~@15 D A B C D A B C D A B C D A B C D ~@7
  D A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "[c4,eb4,g4]", B: "[eb4,g4,bb4]", C: "[bb3,d4,f4]", D: "[ab3,c4,eb4]",
})).s("gm_harpsichord").gain(0.54)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@41 A B C D A B C D ~@32 A B C D A B C D ~@16 A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "~@2 [g4,c5] ~ [g4,c5] ~ [c5,eb5]!2 ~ [g4,c5] [g4,eb5] ~@5", // C5 Cm C5 Cm
  B: "~@2 [g4,bb4] ~ [g4,bb4] ~ [bb4,eb5]!2 ~ [g4,bb4] [g4,eb5] ~@5", // Gm Eb5 Gm Cm
  C: "~@2 [f4,bb4] ~ [f4,bb4] ~ [bb4,d5]!2 ~ [f4,bb4] [f4,d5] ~@5", // Bb5 Bb Bb5 Dm
  D: "[ab4,eb5] ~@2 [ab4,eb5] ~ [ab4,eb5] ~@2 [ab4,eb5]@2 ~ [ab4,c5] [ab4,eb5]!3 ~", // Ab5 Ab Ab5
})).s("gm_synth_brass_1").gain(0.54).pan(0.4)

// other · synth brass 2
const synth_brass_2 = note(`<
  ~@41 A B C D A B C D ~@32 A B C D A B C D ~@16 A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "[g4,g5] [c4,c5] ~@3 [c4,c5] [eb4,eb5] [c4,c5]", B: "[bb3,bb4] [eb3,eb4] ~@3 [bb3,bb4] [g4,g5] [eb4,eb5]",
  C: "[bb4,bb5] ~@4 [d4,d5] [f4,f5] [d4,d5]", // Bb D F D
  D: "[eb4,eb5] ~@2 [eb4,eb5] ~ [eb4,eb5] ~@2 [eb4,eb5]@2 ~ [c4,c5] [eb4,eb5]!3 ~", // Eb C Eb
})).s("gm_synth_brass_2").gain(0.45).pan(0.8)

// other · electric guitar muted · "Muted Gt."
const electric_guitar_muted = note(`<
  ~@41 A B C D A B C D ~@32 A B C D A B C D ~@8 A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "c3!16", B: "eb3!16", C: "bb2!16", D: "ab2!16",
})).s("gm_electric_guitar_muted").gain(0.29)

// chords · orchestra hit
const orchestra_hit = note(`<
  ~@41 A B C D A B C D ~@32 A B C D A B C D ~@16 A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "~@2 [g5,c6] ~ [g5,c6] ~ [c6,eb6]!2 ~ [g5,c6] [g5,eb6] ~@5", // C5 Cm C5 Cm
  B: "~@2 [g5,bb5] ~ [g5,bb5] ~ [bb5,eb6]!2 ~ [g5,bb5] [g5,eb6] ~@5", // Gm Eb5 Gm Cm
  C: "~@2 [f5,bb5] ~ [f5,bb5] ~ [bb5,d6]!2 ~ [f5,bb5] [f5,d6] ~@5", // Bb5 Bb Bb5 Dm
  D: "[ab5,eb6] ~@2 [ab5,eb6] ~ [ab5,eb6] ~@2 [ab5,eb6]@2 ~ [ab5,c6] [ab5,eb6]!3 ~", // Ab5 Ab Ab5
})).s("gm_orchestra_hit").gain(0.29).pan(0.6)

// other · lead 7 fifths · "5th Saw Wave"
const lead_7_fifths = note(`<
  ~@41 A B C D A B C D ~@32 A B C D A B C D ~@16 A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "c5", B: "eb5", C: "bb4", D: "ab4",
})).s("gm_lead_7_fifths").gain(0.32)

// chords · distortion guitar · "Distortion Gt."
const distortion_guitar = note(`<
  ~@9 A B C D A B C D ~@15 D A B C D A B C D A B C D A B C D A B C D A B C D ~@15 D A B C D A B C D A B C D A B C D ~@7
  D A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "[c3,g3]", B: "[eb3,bb3]", C: "[bb2,f3]", D: "[ab2,eb3]",
})).s("gm_distortion_guitar").gain(0.45).pan(0.6)

// other · lead 8 bass lead · "TB 303 Sim"
const lead_8_bass_lead = note("<~@89 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~>".pickRestart({
  A: "c3!2 c4!2 c3!2 c4!2 c3!2 c4!2 c3!2 c4!2", B: "eb3!2 eb4!2 eb3!2 eb4!2 eb3!2 eb4!2 eb3!2 eb4!2",
  C: "bb2!2 bb3!2 bb2!2 bb3!2 bb2!2 bb3!2 bb2!2 bb3!2", D: "ab2!2 ab3!2 ab2!2 ab3!2 ab2!2 ab3!2 ab2!2 ab3!2",
})).s("gm_lead_8_bass_lead").gain(0.25)

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

// drums · rim
const rim = s("rim").struct("<[x!2 ~@2] ~@121>").gain(0.7)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 A B@3 C B@3 C B@15 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@15 C B@3 C B@3 C B@3 C B@3 C ~@7 A B@3 C B@3 C B@3 C
  B@3 C B@3 C B@3 C ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x!12",
})).gain(0.7)

// drums · clap
const clap = s("cp").struct(`<
  A B@7 A B@3 C B@3 C B@15 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@15 C B@3 C B@3 C B@3 C B@3 C ~@7 A B@3 C B@3 C B@3 C
  B@3 C B@3 C B@3 C ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.7)

// drums · hihat
const hihat = s("hh").struct("<[~@3 x] [x!4]!7 [x ~@2 x] [x!4]!112 ~>").gain(0.7)

// drums · open hat
const open_hat = s("oh").struct("<[~@7 x] [~ x ~ x ~ x ~ x]!7 [~@7 x] [~ x ~ x ~ x ~ x]!112 ~>").gain(0.7)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@23 A ~@7 A ~@7 A ~@23 A ~@7 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.78)

// drums · shaker
const shaker = s("sh").struct("<~@9 A@8 ~@15 A@25 ~@15 A@17 ~@8 A@24 ~>".pickRestart({
  A: "x!16",
})).gain(0.47)

stack(
  bass, bass_2, electric_guitar_clean, harpsichord, synth_brass_1, synth_brass_2, electric_guitar_muted, orchestra_hit,
  lead_7_fifths, distortion_guitar, lead_8_bass_lead, kick, rim, snare, clap, hihat, open_hat, crash, shaker
)

More by Bloodhound Gang