Strudelify

Back Off Bitch

Guns N' Roses

KeyG majorTempo138 bpm
0:00/0:00
// Back Off Bitch — Guns N' Roses
// 138 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 178 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(138/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 · "Gtr. I"
const overdriven_guitar = note(`<
  ~ A@2 B@2 C@2 B@2 A@2 B@2 D@2 E@2 F G H G H G H I J K L M J K L N O P Q R O P Q S O P T U V W X Y W@2 X Y W@2 X Z K AA
  AB AC K AA AB AC AD AE AF AG AD AE AF AG O P Q R O P Q S V W X AH W@2 X Y W@2 X Z K AA AB AC K AA AB AC AD AE AF AG AD
  AE AF AG AI AJ AI AJ AK AL AK AM AN AO AN AO AK AL AK AP F G H G H G H I J K L M J AQ L M W@2 X Y W@2 X Y W@2 X Y W@2
  X Z K AA AB AC K AA AB AC K AA AB AC K AA AR@2 AS@4 AT
>`.pickRestart({
  A: "[e4,b4]/2", B: "[[d4,a4]@27 ~@5]/2", C: "[[c#4,a4]@27 ~@5]/2", D: "[c#4,a4]/2",
  E: "[[d4,a4]@6 [d4,a4]@3 [d4,a4]!3 [d#4,a4] [d4,a4] [d#4,a4] [d4,a4]]/2", // D5 D#dim D5 D#dim D5
  F: "[e4,b4]@4 e3@2 [e4,b4]!2 [e4,b4]@2 [d4,a4]@2 [d4,a4] ~ [d4,a4] ~", G: "[c#4,a4]@3 [d4,a4]@2 [d4,a4]@2 g3",
  H: "e4@4 e3@2 [e4,b4]!2 [e4,b4]@2 [d4,a4]@2 [d4,a4] ~ [d4,a4] ~", I: "[c#4,a4]@3 [d4,a4]@2 [d4,a4]@3",
  J: "[e3,b3,e4,g#4,b4,e5]", K: "[g3,d4,g4]", L: "[a3,e4,a4]", M: "[a3,d4,a4,d5]", N: "[a3,d4,a4,d5]@11 ~@5",
  O: "e3@2 [b3,e4] e3!2 [b3,e4]@2 e3", P: "[g3,d4,g4]@2 [d4,g4] g3!2 [d4,g4]!2 g3",
  Q: "[a3,e4,a4]@2 [e4,a4] a3!2 [e4,a4]!2 a3", R: "[d4,a4,d5]@2 [a4,d5] d4!2 [a4,d5] [b4,e5]@2",
  S: "[d4,a4,d5]@2 [d4,a4,d5]!5 [e4,b4,e5]", // D5 E5
  T: "[a3,e4,a4]@4 [a3,e4,a4]@2 [a3,e4,a4]@2 a3!2 a3@2 [a3,e4,a4]@2 [a3,e4,a4]@2", U: "~ [d4,a4,d5]!6 [e4,b4,e5]",
  V: "e3@2 [e4,b4] [d4,a4]@3 c#4 d4, ~@3 a4", W: "e3@2 e3!2 [e4,b4]@2 [d4,a4]@6 c#4@2 d4@2, ~@3 a4",
  X: "e3!2 [e4,b4] ~ [d4,a4] a3 [c#4,a4] a3", Y: "[d4,a4] a3 [c#4,a4] [d4,a4]@3 c#4 d4, ~@3 a4",
  Z: "[d4,a4] a3 [c#4,a4] [d4,a4]@5", AA: "[a3,e4,a4]@10 e3@2 g3 a3@3", AB: "e3@2 e4!2 [b4,e5]@4 e4@2 e4!2 [a4,d5]@4",
  AC: "e4@2 e4!2 [b4,e5]@4 e4@2 e4!2 [a4,d5]@4", AD: "[e3,b3]", AE: "[g3,d4]", AF: "[a3,e4]",
  AG: "~ [d4,a4]!3 [d4,a4]@2 [d4,a4]@2", AH: "[d4,a4] a3 c#4 [d4,a4]@3 c#4 d4, ~@3 a4", AI: "[f#3,c#4]@3 [f#3,c#4]@5",
  AJ: "[a3,e4]@3 [a3,e4]@5", AK: "[b3,f#4]@3 [b3,f#4]@5", AL: "[d4,a4]@3 [d4,a4]@5",
  AM: "[d4,a4]@4 [d4,a4] [c4,g4] [a3,e4] [g3,d4]", AN: "[f#4,c#5]@3 [f#4,c#5]@5", AO: "[a4,e5]@3 [a4,e5]@5",
  AP: "[d4,a4] [d#4,a#4]", AQ: "[g3,d4,g4]@7 ~", AR: "[b3,e4,b4] ~ [b3,e4,b4] ~", AS: "[e4,b4]/4", AT: "[b3,e4,b4] ~@3",
})).s("gm_overdriven_guitar").gain(0.26)

// chords · overdriven guitar · "Gtr. II"
const overdriven_guitar_2 = note(`<
  ~ A@2 B@2 C@2 B@2 A@2 B@2 D@2 E@2 F@4 G@2 H I J K L M J K N O P M Q M P M Q R@3 S T U@2 V W U@2 V X U@2 V X Y Z AA@2
  AB AC AD@2 AE AB AC AF AE AB AC AF P M Q M P M Q T U@2 V X U@2 V X U@2 V X AB AC AD@2 AB AC AD@2 AE AB AC AF AE AB AC
  AF AG AH AG AH AI AJ AI AK AL AM AL AM AI AJ AI AN AO@2 AP@2 AQ@4 P M Q M P M Q T U@2 V X U@2 V X U@2 V X U@2 V X AB
  AC AR@2 AB AC AR@2 AB AC AR@2 AB AC AS@2 AT@4 AU
>`.pickRestart({
  A: "[e4,b4]/2", B: "[[d4,a4]@27 ~@5]/2", C: "[[c#4,a4]@27 ~@5]/2", D: "[a4, c#4@27 ~@5]/2",
  E: "[[d4,a4]@6 [d4,a4]@3 [d4,a4]!3 [d#4,a4] [d4,a4] [d#4,a4] [d4,a4]]/2", // D5 D#dim D5 D#dim D5
  F: "[[e4,b4]@20 ~@2 f#3 g3 f#3@4 e3@2 [b3,e4]@6 [b4,e5]@24 e3@2 e3@2]/4", G: "[[e4,b4]@10 e4!6]/2",
  H: "e4 e4@3 e4 [b4,e5]@3", I: "e4 [b4,e5] e4@2 e4@2 e4@2", J: "[e4,b4]@3 [e4,b4]", K: "[d4,a4]@3 [d4,a4]",
  L: "[c#4,a4]@3 [c#4,a4]", M: "[d4,a4]", N: "[c#4,a4]@3 ~", O: "[d4,a4]@6 [d4,a4]@2 ~@2 [d4,a4] ~ [d4,a4]@2 ~@2",
  P: "[e4,b4]", Q: "[c#4,a4]", R: "[[d4,a4]@6 [d4,a4] [e4,b4]@7 [e4,b4] [d4,a4]@9]/3", S: "[c#4,a4]@6 [c#4,a4]!2",
  T: "~ [d4,a4]!7", U: "[e4,b4] ~ [e4,b4] ~ [e4,b4]@2 [d4,a4]@6 [c#4,a4]@2 [d4,a4]@2",
  V: "[e4,b4] ~ [e4,b4] ~ [e4,b4]@2 ~@2 [d4,a4]@2 ~@2 [c#4,a4]@2 ~@2", // E5 D5 F#m
  W: "[d4,a4]@2 ~@2 [c#4,a4]@2 [d4,a4]@6 ~ [c#4,a4] ~ [d4,a4]", X: "[d4,a4] ~ [c#4,a4] [d4,a4]@3 [c#4,a4] [d4,a4]",
  Y: "[g3,d4] ~@3 [g3,d4] ~ [g3,d4]@6 [g3,d4]@2 ~@2", Z: "[a3,e4] ~@3 [a3,e4] ~ [a3,e4]@6 [g3,d4]@4",
  AA: "[e3@2 [e4,b4,e5]@2 [e4,c#5,f#5] [e4,b4,e5] ~ [e4,b4,e5]@3 [e4,b4,e5]@2 [e4,c#5,f#5] [e4,b4,e5]@3]/2", // E5 F#7 E5 F#7 E5
  AB: "[g3,d4]", AC: "[a3,e4]", AD: "[e3@2 [e4,b4,e5]@3 [e4,b4,e5]@2 [e4,b4,e5]@5 [e4,b4,e5]@4]/2", AE: "[e3,b3]",
  AF: "~ [d4,a4]!3 [d4,a4]@2 [d4,a4]@2", AG: "[f#3,c#4]@3 [f#3,c#4]@5", AH: "[a3,e4]@3 [a3,e4]@5",
  AI: "[b3,f#4]@3 [b3,f#4]@5", AJ: "[d4,a4]@3 [d4,a4]@5", AK: "[d4,a4]!2 [d4,a4]@2 [d4,a4] ~ [d4,a4] ~",
  AL: "[f#4,c#5]@3 [f#4,c#5]@5", AM: "[a4,e5]@3 [a4,e5]@5", AN: "[d4,a4]@2 ~@2 [d#4,a#4] ~@3",
  AO: "[[e4,b4]@28 [e4,b4] ~@3]/2", AP: "[[e3,b3]!2 [e3,b3]@14]/2", AQ: "[e3,b3]/2",
  AR: "[e3@2 [e4,b4,e5]@2 [e4,a4,d5] [e4,b4,e5] [e4,a4,d5] [e4,b4,e5]@3 [e4,b4,e5]@2 [e4,a4,d5] [e4,b4,e5]@3]/2", // E5 Dsus2 E5 Dsus2 E5 Dsus2 E5
  AS: "[b3,e4,b4] ~ [b3,e4,b4] ~", AT: "[e4,b4]/4", AU: "[b3,e4,b4] ~@3",
})).s("gm_overdriven_guitar").gain(0.26)

// other · overdriven guitar · "Gtr. III"
const overdriven_guitar_3 = note(`<
  A B C D E F G H I J K L M N@2 O@4 ~@13 P@2 ~@19 Q@2 R S ~@8 T U V W T U X Y@3 ~@14 Q@2 R S ~@8 T U V W T U X Z AA AB
  AC AD AE AF AG AH AI@2 AJ AK AL AM AN AO AP@2 AQ@6 ~@16 AR@2 R S AR@2 R S ~@8 AS AT AU AV AS J AW AX AY@4 AZ
>`.pickRestart({
  A: "~@2 e4 d4 b3 a3 g3@2", B: "[e3,b3]", C: "[b4,e5]", D: "~@2 d5 a4@2 g4 e4 d4, a4@3 ~@5", E: "e4@7 d4",
  F: "e4@2 f#4 f#4@2 g4 g4@2", G: "a4 a4@2 b4 c5@2 d5@2", H: "e5", I: "[g5,b5] [a5,c#6] ~ [a5,c#6]@3 [a5,c#6]@2",
  J: "[a5,c#6]", K: "[a5,c6]@2 g5 e5@3 e5 d4", L: "d5 e5 g5 a5 a5@2 b5 d6", M: "e6@3 g6@3 a6 g6", N: "a6",
  O: "[a6@3 a6@3 a6@3 a6@3 a6@2 a6@12 ~@6]/4", P: "[~ [d5,f#5]@5 ~@2]/2", Q: "e3@2 e3!2 g#4@8 e4@4",
  R: "e3!2 g#4 ~ f#4 ~ e4 ~", S: "f#4 ~ e4 f#4@5", T: "e5@4 e5 d5 b4 a4", U: "g5@4 g5 f#5 d5 b4", V: "a5", W: "f#5!2",
  X: "a5@2 c6 a5@3 a5 g5", Y: "[f#5@2 e5 b4 d5 e5 d5@18]/3", Z: "f#5@2 e5 b4 d5 e5@2 d5",
  AA: "[e5,g#5] [f#5,a5]!2 [e5,g#5] [f#5,a5]!2 [e5,g#5] [f#5,a5]", // E F#m E F#m E F#m
  AB: "[f#5,a5] [e5,g#5] [f#5,a5]!2 [e5,g#5] [f#5,a5] [f#5,a5]@2", AC: "f#5 a5 c#6 ~@2 b5@2 a5, ~@3 e6@3 ~@2",
  AD: "b5@2 a5@6 a5@2 g#5@5 f#5", AE: "a5@2 d6@4 ~ a5@3 g#5@2 c#6@4", AF: "~ g#5@3 f#5@2 b5@3 a5@3 a5@2 g#5@2",
  AG: "f#5 b4 f#5@2 e5 c#5 c5 b4@7 b4 [c#5,f#5]", AH: "d5@2 b4@4 b4@2 [a4,c#5]@4 g#4 ~ d4 ~",
  AI: "[f#6@7 c#5@2 a5 c#6 f#6 a6 g#6 f#6 g#6]/2", AJ: "e6 f#6 e6 f#6 e6 f#6 c#6 d6",
  AK: "c#6@4 b5 c#6 ~ b5@3 ~ b5@5, ~@5 c#6 ~@2", AL: "b5@2 a5@4 f#5 a5 f#5 g#5@3 f#5 g#5 ~ f#5",
  AM: "e5 c#5 ~ c5 b4@3 a4 b4@2 b4@4 a4@2", AN: "e4 f#4 a4 b4@2 e5 f#5 a5", AO: "c#6@3 f#6@2 g#6@3 a6@8",
  AP: "[g#6@28 ~@2 e6 b5]/2", AQ: "e6/6", AR: "e3@2 e3!2 g#4@2 f#4@6 e4@2 f#4@2", AS: "[g5,b5]@3 [a5,c#6]",
  AT: "[a5,c#6]@4 ~ [a5,c#6]@3", AU: "e5@3 b4 d5@4", AV: "e5@3 b4 [g5,b5]@2 [a5,c#6]@2", AW: "e5 f#5", AX: "g5 a5",
  AY: "b5/4", AZ: "[e4,b4,e5] ~@3",
})).s("gm_overdriven_guitar").gain(0.26)

stack(overdriven_guitar, overdriven_guitar_2, overdriven_guitar_3)

More by Guns N' Roses