Strudelify

Somebody

Bryan Adams

KeyG majorTempo100 bpm
0:00/0:00
// Somebody — Bryan Adams
// 100 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
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 · E5
const overdriven_guitar = note("<~@23 [~@3 [e2,b2,e3]] ~@31 [~@3 [e2,b2,e3]] ~@45>")
  .s("gm_overdriven_guitar").gain(0.32).pan(0)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B A B A B C@2 A B A B A B C@2 A B A B A B C@2 D E F E F E F E A B A B A B C@2 A B A B A B C@2 A B A B A B C@2 D E F
  E F E F E G H ~@2 A B A B A B C@2 I J I J I J K L D E F E F E F E D E F E F E F E M
>`.pickRestart({
  A: "[c3,f3,c4,f4]@3 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4]!4 ~@2 [c3,f3,c4,f4]!2 ~@2", // F5
  B: "[d3,g3,d4,g4]@3 [d3,g3,d4,g4] ~@2 [d3,g3,d4,g4]!4 ~@2 [d3,g3,d4,g4]!2 ~@2", C: "[a2,e3,a3]/2",
  D: "[g2,d3,g3,d4,g4]!2 [a2,e3,a3,e4]!2", E: "[c3,g3,c4]!2 [d3,a3,d4]!2", F: "[g2,d3,g3,d4,g4]!2 [a2,e3,a3]!2",
  G: "[c3,f3,g3,c4,f4]", H: "d3 c3 d3@2 ~@12, g2", I: "[a#2,d3]!2", J: "[c3,g3]!2", K: "[d3,g3] [d3,f#3]",
  L: "[d3,e3] [d3,f#3]", M: "[g2,d3,g3] ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(1)

// bass · electric bass finger
const bass = note(`<
  A B A B A C D E A B A B A C D E A B A B A C D E F G F G F G F G A B A B A C D E A B A B A C D E A B A B A C D E F G F
  G F G F G H B A B A B A B A C D E I H J H I H J@2 F G F G F G F G F G F G F G F G K
>`.pickRestart({
  A: "f1@2 f1!14", B: "g1@2 g1!14", C: "e1@2 e1!14", D: "a1@2 a1!14", E: "a1!16", F: "g1@2 g1!6 a1!8",
  G: "c2@2 c2!6 d2!8", H: "c2@2 c2!14", I: "a#1@2 a#1!14", J: "d2@2 d2!14", K: "g1",
})).s("gm_electric_bass_finger").gain(0.57).pan(0.4)

// chords · drawbar organ
const drawbar_organ = note(`<
  A B A B A B C@2 A B A B A B C@2 A B A B A B C@2 D E D E D E D E A B A B A B C@2 A B A B A B C@2 A B A B A B C@2 D E D
  E D E D E ~@4 A B A B A B C@2 F G F G F G H I D E D E D E D E D E D E D E D E J
>`.pickRestart({
  A: "[f4,c5]", B: "[g4,d5]", C: "[a4,e5]", D: "[g4,d5] [a4,e5]", E: "[c4,g4] [d4,a4]", F: "[f4,a#4]", G: "[g4,c5]",
  H: "[d4,g4] [d4,f#4]", I: "[d4,e4] [d4,f#4]", J: "[d4,g4]",
})).s("gm_drawbar_organ").gain(0.25).pan(0.6)

// chords · guitar harmonics
const guitar_harmonics = note("<~@6 A@2 ~@6 A@2 ~@6 A@2 ~@14 A@2 ~@6 A@2 ~@6 A@2 ~@18 A@2 ~@25>".pickRestart({
  A: "[~@9 [e5,a5,d6]@3 ~@4, ~@7 [d5,g5,b5]@9]/2", // Dsus2 G
})).s("gm_guitar_harmonics").gain(0.2)

// drums · kick
const kick = s("bd").struct("<[x!2]!100 x>").gain(0.48)

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

// drums · hihat
const hihat = s("hh").struct("<[x!16]!100 x>").gain(0.24)

// drums · crash
const crash = s("cr").struct("<~@24 A ~@31 A ~@27 A ~@7 A ~@7 A>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<A@7 B A@7 B A@7 B A@15 B A@7 B A@7 B A@11 B A@7 B A@7 B A@16 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x ~@5 x ~ x!3 ~",
})).gain(0.48)

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

More by Bryan Adams