Strudelify
Walk Like an Egyptian cover art

1990

Walk Like an Egyptian

The Bangles

KeyB minorTempo102 bpm
0:00/0:00
// Walk Like an Egyptian — The Bangles
// 102 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "SYNTH BASS" synth bass 2 (copy of ch 2 "FINGERDBAS" electric bass finger)
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(102/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · "FINGERDBAS"
const bass = note(`<
  ~@2 A@12 B@3 C D@2 A@12 B@3 C D@2 E@2 A@2 E@2 A@2 E@3 F G@2 ~@6 A@8 B@3 C H@4 A@7 I ~@8
>`.pickRestart({
  A: "b1@3 f#1@2 a1@2 b1 b1@3 f#1@3 a1@2", B: "e2@3 b1@2 d2@2 e2 e2@3 b1@3 d2@2", C: "e2@3 e2@2 e2@2 e2!4 e2@2 e2@2 e2",
  D: "b1/2", E: "d2@3 a1@2 c2@2 d2 d2@3 a1@3 c2@2", F: "d2@3 a1@2 c2@2 d2 d2@4 c2@4", G: "[b1@29 ~@3]/2",
  H: "[b1@63 ~]/4", I: "b1@3 f#1@2 a1@2 b1 ~ b1!2 ~@5",
})).s("gm_electric_bass_finger").gain(0.4).pan(0.2)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@74 A@2 B@2 ~@12>".pickRestart({
  A: "[b2,f#3]!2 [c#3,g#3] [d#3,a3] ~ [d#3,a3] ~ [d#3,a3] [b2,f#3]!2 [c#3,g#3] [d3,a3] ~@4", // B5 C#5 D#dim B5 C#5 D5
  B: "[[b2,f#3]!2 [c#3,g#3] [d#3,a3] ~ [d#3,a3] ~ [d#3,a3] [b2,f#3]!2 [c#3,g#3] [d3,a3]@21]/2", // B5 C#5 D#dim B5 C#5 D5
})).s("gm_overdriven_guitar").gain(0.25).pan(0.2)

// other · lead 1 square · "SQUAREWAVE"
const lead_1_square = note("<~@2 A@2 B@2 ~@14 A@2 B@2 ~@66>".pickRestart({
  A: "b2/2", B: "b3/2",
})).s("gm_lead_1_square").gain(0.2).pan(0.8)

// other · whistle · Asus2 Emaj7 Asus2
const whistle = note(`<
  ~@50
  [~@2 f#6 ~ d#6 ~ d#6 ~ d#6@3 ~ c#6@2 f#6 ~]
  [d#6 ~ d#6 e6 ~ d#6 b5 ~ b5 ~ b5 a5 ~ a5 [a5,b5] ~]
  [~@2 f#6 ~ [d#6,e6] ~ d#6 ~ d#6@3 ~ c#6@2 f#6 ~]
  [d#6 ~ d#6 e6 ~ d#6 [a5,b5] ~ b5 ~ b5 a5 ~ a5 b5 ~]
  ~@36
>`).s("gm_whistle").gain(0.64)

// drums · kick
const kick = s("bd").struct("<A@2 B@16 A@2 B@16 A@2 B@12 A@4 B@16 A@4 B@7 C ~@8>".pickRestart({
  A: "x", B: "x ~@2 x ~ x ~ x!2 ~@3 x ~@3", C: "x ~@2 x ~ x ~ x ~ x ~@6",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<A@2 B@16 A@2 B@16 A@2 B@12 A@4 B@16 A@4 B@7 C ~@8>".pickRestart({
  A: "x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A@3 ~ A ~@9 A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~@13 A ~ A ~@5 A ~@7 A ~@3 A ~ A ~ A ~@3 A ~@2 B ~@8
>`.pickRestart({
  A: "x", B: "~@5 x ~@2",
})).gain(0.24)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@19 A ~@17 A ~@13 A ~ A ~@17 A ~ A ~@16>".pickRestart({
  A: "x",
})).gain(0.08)

// drums · tambourine
const tambourine = s("tb").struct("<A@2 B C B C A@14 B C B C A@57 D ~@8>".pickRestart({
  A: "x!16", B: "~@3 x!3 ~ x ~ x ~ x!2 ~ x ~", C: "~@3 x!3 ~ x ~@8", D: "x!13 ~@3",
})).gain(0.12)

// drums · bongos
const bongos = s("bongo:18").struct(`<
  A@3 ~ A ~@9 A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C B
  C B C B D ~@8
>`.pickRestart({
  A: "x", B: "~@7 x", C: "~@5 x ~ x", D: "~ x ~ x ~ x ~@2",
})).gain(0.63)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[x!16]!81 [x!11 ~@5] ~@8>").gain(0.61)

// drums · whistle
const whistle_2 = s("ballwhistle:1").struct("<~@3 A ~ A ~@15 A ~ A ~@50 A B A B A B ~@10>".pickRestart({
  A: "~@7 x", B: "~@5 x ~ x",
})).gain(0.21)

stack(
  bass, overdriven_guitar, lead_1_square, whistle, kick, snare, crash, crash_soft, tambourine, bongos, cabasa, whistle_2
)

More by The Bangles