Strudelify
It Wasn't Me cover art

2000 · Hot Shot

It Wasn't Me

Shaggy

KeyC majorTempo94 bpm
0:00/0:00
// It Wasn't Me — Shaggy
// 94 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  [~@3 e4@2 ~ g3 ~@3 f4@2 d4@2 a3@2, e3@4 a2@3 ~, g3@5 c4@2 ~@9]!16
  ~@16
  [~@3 e4@2 ~ g3 ~@3 f4@2 d4@2 a3@2, e3@4 a2@3 ~, g3@5 c4@2 ~@9]!8
  ~@16
  [~@3 e4@2 ~ g3 ~@3 f4@2 d4@2 a3@2, e3@4 a2@3 ~, g3@5 c4@2 ~@9]!8
  ~@8
  [~@3 e4@2 ~ g3 ~@3 f4@2 d4@2 a3@2, e3@4 a2@3 ~, g3@5 c4@2 ~@9]!15
  [~@3 e4@2 ~ g3 ~ a2@6 ~@2, e3 ~, g3@5 c4@2 ~@9]
>`).s("gm_electric_guitar_jazz").gain(0.31)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  A B A B A B A B A C A C A C A B ~@16 A C A C A C A B ~@16 A C A C A C A B ~@8 A C A C A C A B ~@8
>`.pickRestart({
  A: "b4 c5", B: "b4 a4", C: "b4@8 a4@7 ~",
})).s("gm_string_ensemble_2").gain(0.2)

// other · timpani
const timpani = note(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@7 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@7 A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~@14 g2!2",
})).s("gm_timpani").gain(0.51)

// bass · fretless bass
const bass = note("<~@8 [c2@2 ~ g1@2 ~ c2 ~ a#1@2 ~@6]!80>").s("gm_fretless_bass").gain(0.31)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@12 A@4 ~@20 A@4 ~@20 A B A B ~@24>".pickRestart({
  A: "e4@2 g4 c5@2 g4 e4 ~ d4@2 f4@2 a4@2 ~@2", B: "e4 ~ g4 c5@2 g4 e4 ~ d4@2 f4@2 a4@2 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.51)

// other · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@76
  [e4@2 g4 c5@2 g4 e4 ~ d4@2 f4@2 a4@2 ~@2]
  [e4 ~ g4 c5@2 g4 e4 ~ d4@2 f4@2 a4@2 ~@2]
  [e4@2 g4 c5@2 g4 e4 ~ d4@2 f4@2 a4@2 ~@2]
  [e4 ~ g4 c5@2 g4 e4 ~ d4@2 f4@2 a4@2 ~@2]
  ~@4
  [e4@2 g4 c5@2 g4 e4 ~ d4@2 f4@2 a4@2 ~@2]!3
  [e4@2 g4 c5@2 g4 e4 ~ d4@3 ~@5]
>`).s("gm_acoustic_guitar_steel").gain(0.31)

// drums · rim
const rim = s("rim").struct("<~@8 A@23 B A@23 B A@15 B A@15 C>".pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "~ x ~@2",
})).gain(0.31)

// drums · kick
const kick = s("bd").struct("<~@8 [x!2]!23 x [x!2]!23 x [x!2]!15 x [x!2]!16>").gain(0.31)

// drums · snare
const snare = s("sd").struct("<~@8 A@23 B A@23 B A@15 B A@15 C>".pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "~ x ~@2",
})).gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!8]!79 [x!5 ~@3]>").gain(0.31)

stack(
  electric_guitar_jazz, string_ensemble_2, timpani, bass, acoustic_guitar_steel, acoustic_guitar_steel_2, rim, kick,
  snare, hihat
)

More by Shaggy