Strudelify

Electric Avenue

Eddy Grant

KeyG majorTempo125 bpm
0:00/0:00
// Electric Avenue — Eddy Grant
// 125 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/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 · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  A@4 B@2 C@2 D@2 E@2 F@2 G H F@2 G I J@2 K@2 L@2 M@2 F@2 G H F@2 G N@2 O@6 P F@2 G H F@2 G I J@2 Q@2 R@2 S@2 F@2 G H
  F@2 G I T I T I U I T V F@2 G H F@2 G I T I T I U W X Y F@2 G H F@2 G I
>`.pickRestart({
  A: "[[g4,b4,f5]@2 ~@5 [b3,d4,g4]@5 ~ d4 g4 f4]/2", // G7 G
  B: "[~ d5 b4 d5!2 b4 c5 d5@2 b4 [d4,g4]@2 ~ b4!3, ~ [d4,g4] ~ [d4,g4] ~@3 [d4,g4]]/2", // G5
  C: "[b4@2 [d4,g4,c5]@2 d5 b4!2 g4@3 [b3,d4]@2 ~@2 [b3,d4]@2, ~@3 d4 ~@4]/2", // Csus2 Bm
  D: "[~ d5 b4 c5 d5 b4 e5 d5@2 b4 [d4,g4]@2 ~ b4!3, ~ [d4,g4] ~ g4 ~@3 [d4,g4]]/2", // G5
  E: "[b4@2 c5!2 d5 b4 [c4,a4] [b3,g4]@2 [d4,b4]@2 b4@2 b4 a4 g4, ~@2 [d4,g4]@2 d4@2 ~@5 d4@3 ~@2]/2", // F Em G G5
  F: "[f4@2 [d4,g4,c5]@2 b4@2 g4 g4@2 g4!3 f4 ~@2 g4, ~@3 [b3,d4] ~ [b3,d4] ~ [b3,d4]]/2", // Csus2 Bm
  G: "g4!2 a4 g4 b4 g4 [b3,d4]@2, ~ [b3,d4] ~@2", H: "~@3 d5@2 b4 a4 g4, ~@3 d4@3 [b3,d4]@2",
  I: "~ [b3,d4,g4] ~ [b3,d4,g4]", J: "[~ d5 b4 d5!2 b4 c5 d5@2 b4 [d4,g4]@2 ~@2 [d4,g4]@2, ~ [d4,g4] ~ [d4,g4] ~@4]/2",
  K: "[b4!2 c5!2 d5 b4!2 g4@3 [b3,d4]@2 ~@2 [b3,d4]@2, ~ [d4,g4] ~ d4 ~@4]/2", // Bm G5
  L: "[~ d5 b4 c5 d5 b4 e5 d5@2 b4 [d4,g4]@2 ~@2 [d4,g4]@2, ~ [d4,g4] ~ g4 ~@4]/2", // G5
  M: "[b4@2 [d4,g4,c5]@2 d5 b4 [c4,a4] [b3,g4]@2 [d4,b4]@2 b4@2 b4 a4 g4, ~@4 d4@2 ~@5 d4@3 ~@2]/2", // Csus2 F Em G
  N: "[~@2 [b3,d4,g4]@2 ~ [g4,c5]@2 [g4,b4,d5]@3 [d4,g4,b4]@2 ~@2 [d4,g4,b4]@2]/2", // G C5 G
  O: "[~@2 [d4,g4,b4]@2 ~ [g4,c5]@2 [g4,b4,d5]@3 [d4,g4,b4]@2 ~@2 [d4,g4,b4]@2]/2", // G C5 G
  P: "~ [d4,g4,c5]@2 [d4,g4,b4]@2 b4 a4 g4", // Csus2 G
  Q: "[b4!2 [d4,g4,c5]@2 d5 b4 a4 g4@3 [b3,d4]@2 ~@2 [b3,d4]@2, ~@3 d4 ~@4]/2", // Csus2 Bm
  R: "[~ d5 b4 d5!2 b4 e5 d5@2 b4 [d4,g4]@2 ~@2 b4!2, ~ [d4,g4] ~ g4 ~@3 [d4,g4]]/2", // G5
  S: "[b4@2 [d4,g4,c5]@2 d5 b4 [c4,a4] [b3,g4]@2 [d4,g4]@2 b4@2 b4 a4 g4, ~@4 d4@2 ~@5 d4@3 ~@2]/2", // Csus2 F Em G5
  T: "~@2 [b4,d5]@4 [g4,b4] [a4,c5] [b4,d5]@4 ~@4", U: "~@2 [b4,d5]@4 [g4,b4] [a4,c5] [b4,d5]@2 [g4,b4]@6",
  V: "~@3 b4@2 b4 a4 g4, ~@3 d4@3 ~@2", W: "~@2 [b3,d4,g4]@2 ~ [g4,b4]@2 [a4,c5]",
  X: "[b4,d5]@2 [g4,b4] [a4,c5] [b4,d5]@4", Y: "~@3 b4@2 b4 a4 g4, ~ [b3,d4] ~ [b3,d4]",
})).s("gm_distortion_guitar").gain(0.26).pan(0.3)

// bass · electric bass pick · "Bass"
const bass = note("g2 g1 g2 g1").s("gm_electric_bass_pick").gain(0.15).pan(0.8)

stack(distortion_guitar, bass)

More by Eddy Grant