Strudelify

Driver 8

R.E.M.

KeyG majorTempo160 bpm
0:00/0:00
// Driver 8 — R.E.M.
// 160 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 acoustic guitar steel (copy of ch 1 electric guitar clean)
// note: Full arrangement: all 133 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 27.
setcpm(160/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "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 clean
const electric_guitar_clean = note(`<
  A B C D A B C E F G H I J K L M N O H I J K L M P Q R S T U V W X Y Z AA F G H I J K L M N O H I J K L M P Q R S T U V
  W AB Y AB Y AB Y AB AC AD AE AF AG AH AI AJ AK AD AE AF AG AH AI AJ AK A B C D A B C E F G H I J K L M N O H I J K L M
  P Q R S T U V W AL AM AN AO AL AM AN AP X Y AB Y AB Y AB Y AQ
>`.pickRestart({
  A: "e3@4 e3 f#3 g3 b3", B: "a3@3 b3@3 c4@2", C: "f#4 g4@2 b4@3 g4!2", D: "g4!2 f#4 g4 e4 g4 d4 [d4,g4]",
  E: "g4!2 f#4 g4 e4 g4 d4 b4", F: "e3@2 [e4,g4,b4,e5]@3 [b4,e5] [b3,e4,g4,b4] [c5,e5]",
  G: "[a3,e4,a4,c5,e5]@2 [a3,e4,a4,c5] e5!3 [a4,c5,e5] [b4,e5], ~@3 c5@2 ~@3", // Am E5
  H: "[g3,b3,d4,g4]@2 [d4,g4,d5,g5] [g4,d5,g5]@2 [d5,g5] [d4,g4,d5,g5] [d5,g5]", // G G5
  I: "[f#3,d4]@2 [g4,d5,g5] [a3,d4,g4]@2 [g4,d5,g5] [d4,g4,d5] [b4,e5]", J: "e3 [e4,g4,b4,e5]@2 [g4,b4,e5]",
  K: "[a3,e4,a4,c5]@2 [e4,a4,c5,e5] [c5,e5]@2 [c5,e5] [a4,c5] [b4,e5]", // Am C Am E5
  L: "[g3,b3,d4,g4,d5]@2 [d4,g4,d5,g5] [d4,g4,d5,g5]@2 [d5,g5] [d4,g4,d5] [d4,g4]", // G G5
  M: "[f#3,d4,g4]@2 [d4,g4,d5,g5] [d4,g4,d5] [d4,g4] [d5,g5] [d4,g4,b4] [g4,b4]", // Gmaj7 G5 G
  N: "e3@2 [e4,g4,b4,e5]@3 [b4,e5] [b3,e4,g4,b4] [b4,e5]", // Em E5 Em E5
  O: "[a3,e4,a4,c5,e5]@2 [a3,e4,a4,c5] [c5,e5]@2 e5 [a4,c5,e5] [b4,e5]", P: "d4@2 [d4,d5,e5,f#5]@3 e5 [c5,d5,e5] ~",
  Q: "[c4,e4,g4,d5,e5]@2 [g4,d5,e5] [b3,d4,g4,d5,e5]@2 [d4,g4,d5] d4 [e5,f#5]", // C Em7 G5 Esus2
  R: "[d5,e5,f#5]@2 [d4,d5,e5,f#5]@3 e5 [d4,d5,e5,f#5]@2", // D
  S: "[c4,e4,g4,d5]@2 [d5,e5] [b3,d4,g4,d5,e5]@2 [g4,d5] [g4,b4] [d5,e5,f#5]", // C Dsus2 Em7 G5 G D
  T: "[d4,d5,f#5]@2 [d4,d5,e5,f#5]@3 e5 [e5,f#5] ~", // D Esus2
  U: "[c4,e4,g4,d5,e5]@2 [d5,e5] [b3,d4,g4,d5,e5]@2 [g4,d5] [a3,d4] [e5,f#5]", // C Dsus2 Em7 G5 D5 Esus2
  V: "[d4,d5,f#5]@2 [d4,d5,e5,f#5]@3 e5 [d4,d5,e5,f#5] d4", W: "[c4,e4,g4,d5,e5]@2 g4 [b3,d4,g4,d5,e5]@2 [g4,d5] d4 b4",
  X: "e3 ~ d4 a3 f#3 a3 d4 a3", Y: "g3 a3 d4 a3 f#3 a3 d4 a3", Z: "e3 a3 d4 a3 f#3 a3 d4 a3",
  AA: "g3 a3 d4 a3 b3 a3 ~ [a3,d4]", AB: "e3 b3 d4 a3 f#3 a3 d4 a3", AC: "g3 a3 d4 a3 f#3 [a3,d4] [d4,g4] [a3,d4]",
  AD: "[a3,e4,a4,c5]@2 [e4,a4,c5,e5] [c5,e5] d4 e4 [e4,a4,c5] [a4,c5,e5], ~@2 a4 ~", // Am C Am
  AE: "[a3,e4]@2 [e4,a4] [a4,c5,e5] [a3,e4]@2 b3@2", // A5 Am A5
  AF: "[c4,e4]@2 [c4,e4,g4,c5] [g4,c5,g5] [d4,c5] e4 [e4,g4,c5,g5] [e4,g4,c5], ~@2 g4 ~", // C C5 D7 C
  AG: "[c4,e4,g4,c5]@2 [c4,e4,g4,c5,g5] [g4,c5,g5] [d4,c5] e4 [e4,g4,c5,g5] [b4,e5], ~@2 g4 ~", // C C5 D7 C E5
  AH: "[g3,b3,d4,g4,b4,g5]@2 [d4,g4,b4,g5]@2 [d4,g4,b4]!3 [g4,b4,g5]", // G
  AI: "[g4,b4,e5,g5]!3 [g4,b4,d5,g5]@2 [d5,g5] [g4,b4,e5,g5] [b4,e5,g5]", // Em G G5 Em
  AJ: "[d4,a4]@2 [d4,a4,d5,f#5]@3 [d4,a4,d5,f#5]!2 [a4,d5,f#5]", // D5 D
  AK: "[d4,a4,d5,g5] [a4,d5,g5] [d4,a4,d5,g5] [d4,a4,d5,f#5]!3 [a4,d5,f#5] [b4,e5]", // Dsus4 D E5
  AL: "[d5,e5,f#5]@2 [d4,d5,e5,f#5]@3 [e5,f#5] [d4,d5,f#5] d4", // D Esus2 D
  AM: "[c4,e4,g4,d5,e5]@2 [g4,d5] [b3,d4,g4,d5,e5]@2 [d4,g4,d5] [a3,d4] [d5,e5,f#5]", // C G5 Em7 G5 D5 D
  AN: "[a3,d4,d5]@2 [d4,d5,e5,f#5]@3 [e5,f#5] [a3,d4,d5,e5,f#5] [d4,d5]", // D5 D Esus2 D
  AO: "[c4,e4,g4,d5,e5]@2 [e4,g4,d5] [b3,d4,g4,d5,e5]@2 [d4,g4,d5] ~ [e5,f#5]", // C Em7 G5 Esus2
  AP: "[c4,e4,g4,d5,e5]@2 [e4,g4,d5] [b3,d4,g4,d5,e5]@2 [d4,g4,d5] ~ [b4,e5]", AQ: "e3",
})).s("gm_electric_guitar_clean").gain(0.33)

// bass · synth bass 2
const bass = note(`<
  A B C D A E F G H I J K L M N O H I J K L M N O P Q R S T Q T U V W X Y H I J K L M N O H I J K L M N O P Q R S T Q T
  U X W V W X W V W Z AA AB AC AD AE AF AG AH AI AJ AC AK AL AM AN A B C D A E F G H I J K L M N O H I J K L M N O P Q R
  S T Q T U R Q AO AP T AQ AO AR V AS V AS V AS V AS AT
>`.pickRestart({
  A: "e2@4 e2!2 b1!2", B: "a1@3 b1@3 c2@2", C: "b1 c2 d2 g2@3 f#2@2", D: "d2@2 f#2 a2@3 f#2@2", E: "a1@3 b1@3 a1@2",
  F: "g1@3 b1@2 c2!2 d2", G: "d2@3 e2@2 d2!3", H: "e2@2 e2 e2@3 b1@2", I: "a1@2 a1 b1 ~ a1!3", J: "g1 b1 d2 g2@3 f#2@2",
  K: "d2@2 f#2 a2@3 g2@2", L: "e2@2 e2@4 b1!2", M: "a1@2 a1 b1@2 b1 a1@2", N: "g1@3 b1!2 c2!2 d2",
  O: "f#2@2 f#2 e2@2 d2 d2@2", P: "d2@2 d2@2 d2!2 a1 b1", Q: "c2 g2 c2 b1@2 g2 a1 b1", R: "d2@2 d2@4 a1 b1",
  S: "c2@2 g2@2 c2@2 ~ b1@3 g2@2 a1@2 b1@2", T: "d2!2 d2@4 a1 b1", U: "c2@2 c2 b1@2 g2 b1!2", V: "e2@3 e2 f#2@4",
  W: "g2 f#2", X: "e2 f#2", Y: "g2@4 b2 a2 g2 a2", Z: "a1@4 d2 e2@3", AA: "a1@2 a1 b1", AB: "c2@3 c2 g1@4",
  AC: "c2@4 d2 e2 g2@2", AD: "g2@3 g2 d2@4", AE: "g2@3 d2 f2@2 e2@2", AF: "d2@4 a1@2 a1!2", AG: "d2@3 d2!3 c2 b1",
  AH: "a1 e1", AI: "a1@2 a1!2 a1@2 b1@2", AJ: "c2@2 c2!2 g1@4", AK: "g2 d2", AL: "g1@2 f2 e2", AM: "d2 e2",
  AN: "f#2@3 d2 a2@2 f#2@2", AO: "c2 d2 d2@4 a1 b1", AP: "c2 g2 c2 b1@2 g2 g1 b1", AQ: "c2 g2 ~ b1@2 g2 a1 b1",
  AR: "c2 g2 c2 b1@2 g2 b1!2", AS: "g2@2 f#2!2", AT: "e2",
})).s("gm_synth_bass_2").gain(0.47)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@3 A ~@20 B ~@3 C ~@3 D ~@2 E ~@16 B ~@3 C ~@10 F ~@19 A ~@20 B ~@3 C ~@6 G ~@3 G ~@9
>`.pickRestart({
  A: "~@6 g4 ~", B: "[e5,f#5]@2 ~@5 b4", C: "~@7 d5", D: "~ b3 ~@6", E: "~@6 [d4,g4,b4] ~", F: "~@6 b4 ~",
  G: "~@6 d4 ~",
})).s("gm_electric_guitar_clean").gain(0.17)

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

// drums · snare
const snare = s("sd").struct("<[x!2 ~ x] [~ x ~ x]!23 ~@109>").gain(0.51)

// drums · crash
const crash = s("cr").struct("<[x!2 ~ x] [~ x ~ x]!7 ~@125>").gain(0.26)

stack(electric_guitar_clean, bass, electric_guitar_clean_2, kick, snare, crash)

More by R.E.M.