Strudelify

One Night Love Affair

Bryan Adams

KeyB minorTempo120 bpm
0:00/0:00
// One Night Love Affair — Bryan Adams
// 120 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// bass · electric bass finger · "MIDI"
const bass = note(`<
  A B A B C D C D C D C D C E F D C D C D C E F D G H I J G H I J G H I J G H I J C D C D C D C D C E F D C D C D C E F
  D G H I J G H I J G H I J G H I J C D C D C D C D C E F D C D C D C E F D G H I J G H I J G H I J G H I J G H I J G H
  I J G H I J G H I J
>`.pickRestart({
  A: "b1!2 ~@6", B: "e1!2 ~@6", C: "b1!2 ~ b1!5", D: "e1!2 ~ e1!5", E: "g#1!2 ~ g#1!5", F: "f#1!2 ~ f#1!5",
  G: "d1@2 ~ d1@4 ~", H: "c#1@2 ~ c#1@4 ~", I: "b1 ~@2 a1, ~@3 b1@4 ~", J: "g1@2 ~ g1@4 ~",
})).s("gm_electric_bass_finger").gain(0.4)

// other · pad halo · "MIDI"
const pad_halo = note("<~@4 A@4 ~@8 A@8 ~@16 A@4 ~@8 A@8 ~@16 A@4 ~@8 A@8 ~@32>".pickRestart({
  A: "f#4/4",
})).s("gm_pad_halo").gain(0.26)

// chords · rock organ · "MIDI"
const rock_organ = note(`<
  ~@4 A B A B ~@8 A B A B A ~@3 C D E F C D E F C D E F C D E F A B A B ~@8 A B A B A ~@3 C D E F C D E F C D E F C D E
  F A B A B ~@8 A B A B A ~@3 C D E F C D E F C D E F C D E F C D E F C D E F C D E F C D E F
>`.pickRestart({
  A: "~ f#5 d#5 b4 f#5@2 d#5 ~, b2", B: "~ f#5 d#5 b4 f#5@2 d#5 ~, e3", C: "[d5,f#5,a5]", D: "[c#5,f#5,a5]",
  E: "[f#4,b4,d5]", F: "[g4,b4,d5]",
})).s("gm_rock_organ").gain(0.48)

// drums · kick
const kick = s("bd").struct("<[x!2]!24 [x ~@2 x!2 ~@3]!16 [x!2]!20 [x ~@2 x!2 ~@3]!16 [x!2]!20 [x ~@2 x!2 ~@3]!32>")
  .gain(0.48)

// drums · snare
const snare = s("sd").struct("~ x ~ x").gain(0.61)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@19 A ~@35 A ~@7 A ~@7 A ~@19 A ~@7 A ~@7 A ~@16>".pickRestart({
  A: "~@3 x",
})).gain(0.61)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@19 A ~@35 A ~@7 A ~@7 A ~@19 A ~@7 A ~@7 A ~@16>".pickRestart({
  A: "~@6 x!3 ~ x ~ x ~@3",
})).gain(0.61)

// drums · crash
const crash = s("cr").struct("<~@3 A ~@19 A ~@35 A ~@7 A ~@7 A ~@19 A ~@7 A ~@7 A ~@16>".pickRestart({
  A: "~@3 x",
})).gain(0.61)

stack(bass, pad_halo, rock_organ, kick, snare, low_tom, mid_tom, crash)

More by Bryan Adams