Strudelify
Cuts Like a Knife cover art

1989 · Cuts Like A Knife

Cuts Like a Knife

Bryan Adams

KeyD majorTempo100 bpm
0:00/0:00
// Cuts Like a Knife — Bryan Adams
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "tk2" acoustic guitar steel (copy of ch 1 "tk1" overdriven guitar)
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · overdriven guitar · "tk1"
const overdriven_guitar = note(`<
  ~ A B@3 A C@3 D E D E D E D E D E F E D E G H I J K L A B@3 A C@3 D E D E D E D E D E F E D E G H I J K L A B@3 A C@3
  A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 M
>`.pickRestart({
  A: "[d3,e4] [d3,f#4] ~ [d3,f#4]@3 [d3,e4] [d3,d4]", B: "[[d3,e4]@2 [d3,b3] [d3,d4]@3 [d3,b3] [d3,a3]@17]/3",
  C: "[[d3,e4]@2 [d3,b3] [d3,d4]@3 [d3,b3] ~@9 [g2,b2] c3 d3 [g2,e3]@3 ~@2, ~@7 a3@17, ~@7 d3@11 ~ d3@5]/3", // Dsus2 G D G C
  D: "d3 a3 d4 f#4@3 d4 a3", E: "g2 g3 d4 c3 d4 g4@3", F: "a3 ~@2 f#4@3 ~ a3, d3, d4 d4@2 d4, ~ a3@6 ~",
  G: "d3 a3 d4 f#4@2 d4 [d3,a3,d4,f#4]!2", H: "[d3,a3,d4,f#4]!8", I: "[a2,e3,a3]", J: "[b2,f#3,b3]", K: "[c3,g3,d4]",
  L: "[g3,b3,d4]", M: "[d3,a3,d4]",
})).s("gm_overdriven_guitar").gain(0.48).pan(0)

// bass · electric bass finger · "tk3"
const bass = note(`<
  ~ A B A C A B A D E F E G E F E G E F E G E F H A I J K L A B A C A B A D E F E G E F E G E F E G E F H A I J K L A B
  A C A B A D A B A C A B A C A B A C A B A C A B A C A B A C M
>`.pickRestart({
  A: "d1!8", B: "g1!3 c2!5", C: "g1 a1 b1 c2!5", D: "g1@2 a1@2 b1@2 c2@9 ~", E: "d1@4 d1 d1@3", F: "g1@3 c2@2 g1 b1 a1",
  G: "g1@3 c2@2 g1 e2@2", H: "d1@3 d1!5", I: "a1!8", J: "b1!8", K: "c2!8", L: "g1", M: "d1",
})).s("gm_electric_bass_finger").gain(0.61).pan(0.4)

// chords · drawbar organ · "tk5"
const drawbar_organ = note(`<
  ~ A B A B A B A C A B A B A B A B A B A B A B A@2 D E F G A B A B A B A C A B A B A B A B A B A B A B A@2 D E F G A B
  A B A B A C 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
>`.pickRestart({
  A: "[d4,a4]", B: "[d4,g4] [c4,g4]", C: "[g3,b3] c4 d4 [g3,d4,e4]@3 ~@2", D: "[a3,e4,a4]", E: "[b3,f#4,b4]",
  F: "[c4,g4,d5]", G: "[g4,b4,d5]",
})).s("gm_drawbar_organ").gain(0.56).pan(0.6)

// drums · kick
const kick = s("bd").struct("<A B@7 C B@19 C B@7 C B@19 C B@7 C B@24 C>".pickRestart({
  A: "~ x", B: "x ~@2 x!2 ~@3", C: "x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<A B@7 C B@15 D B@3 E B@7 C B@15 D B@3 E B@7 C B@23 D E>".pickRestart({
  A: "~@10 x ~ x!3 ~", B: "~ x ~ x", C: "~@2 x ~ x ~ x ~@3 x ~ x!3 ~", D: "~@4 x ~@5 x ~ x!3 ~", E: "x",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~ A@7 B C@16 D@3 ~ A@7 B C@16 D@3 ~ A@7 B A@24 E>".pickRestart({
  A: "x!16", B: "x!7 ~@9", C: "~ x!3 ~ x!3", D: "~ x!7", E: "x",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@9 [x!2]!16 ~@12 [x!2]!16 ~@37>").gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@6 B ~@10 A ~@4 C A@5 ~@6 B ~@10 A ~@4 C A@5 ~@6 B A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
>`.pickRestart({
  A: "x", B: "~@3 x ~@4", C: "~@11 x ~@4",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@28 [~ x!3] ~@27 [~ x!3] ~@33>").gain(0.8)

stack(overdriven_guitar, bass, drawbar_organ, kick, snare, hihat, open_hat, crash, ride)

More by Bryan Adams