Strudelify
A Little Respect cover art

1988 · The Innocents

A Little Respect

Erasure

KeyC majorTempo114 bpm
0:00/0:00
// A Little Respect — Erasure
// 114 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 8 "Bright Acoustic Piano" piano (copy of ch 9 "Pad 3 (polysynth)" pad poly); ch 2 "Electric Guitar (clean)" electric guitar clean (copy of ch 9 "Pad 3 (polysynth)" pad poly)
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(114/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 · pad poly · "Pad 3 (polysynth)"
const pad_poly = note(`<
  A@6 B@2 C@2 D@2 A@2 B@2 E F G H A@2 I@2 E@2 J K A@6 B@2 C@2 D@2 A@2 B@2 E F G H A@2 I@2 E@2 J K A@4 ~@4 A@2 B@2 E F G
  H A@2 I@2 E@2 J K A@2 I@2 E@2 J K A@12 ~
>`.pickRestart({
  A: "[g3,c4,e4] ~ [g3,c4,e4]!2 ~ [g3,c4,e4]!2 ~ [g3,c4,f4] ~ [g3,c4,f4]!2 ~ [g3,c4,f4]!2 ~", // C Csus4
  B: "[g3,b3,d4] ~ [g3,b3,d4]!2 ~ [g3,b3,d4]!2 ~ [g3,c4,d4] ~ [g3,c4,d4]!2 ~ [g3,c4,d4]!2 ~", // G Gsus4
  C: "[g#3,b3,e4] ~ [g#3,b3,e4]!2 ~ [g#3,b3,e4]!2 ~ [a3,b3,e4] ~ [a3,b3,e4]!2 ~ [a3,b3,e4]!2 ~", // E Asus2
  D: "[a3,c4,f4] ~ [a3,c4,f4]!2 ~ [a3,c4,f4]!2 ~ [a#3,c4,f4] ~ [a#3,c4,f4]!2 ~ [a#3,c4,f4]!2 ~", // F A#sus2
  E: "[a3,c4,f4] ~ [a3,c4,f4]!2 ~ [a3,c4,f4]!2 ~ [g3,c4,f4] ~ [g3,c4,f4]!2 ~ [g3,c4,f4]!2 ~", // F Csus4
  F: "[a3,c4,e4] ~ [a3,c4,e4]!2 ~ [a3,c4,e4]!2 ~ [a3,b3,e4] ~ [a3,b3,e4]!2 ~ [a3,b3] [a3,c4,e4] ~", // Am Asus2 Am
  G: "[g3,c4,d4] ~ [g3,c4,d4]!2 ~ [g3,c4,d4]!2 ~ [g3,b3,d4] ~ [g3,b3,d4]!2 ~ [g3,b3,d4]!2 ~", // Gsus4 G
  H: "[g3,b3,f4] ~ [g3,b3,f4]!2 ~ [g3,b3,f4] [g3,b3] ~ [g3,b3,d4] ~ [g3,b3,d4]!2 ~ [g3,b3,d4]!2 ~", // G7 G
  I: "[a3,c4,e4] ~ [a3,c4,e4]!2 ~ [a3,c4,e4]!2 ~ [a3,c4,e4] ~ [a3,c4,e4]!2 ~ [a3,c4,e4]!2 ~", // Am
  J: "[g3,b3,e4] ~ [g3,b3,e4]!2 ~ [g3,b3,e4]!2 ~ [g3,b3,e4] ~ [g3,b3,e4]!2 ~ [g3,b3,e4]!2 ~", // Em
  K: "[a3,c4,f4] ~ [a3,c4,f4]!2 ~ [a3,c4,f4]!2 ~ [b3,d4,g4] ~ [b3,d4,g4]!2 ~ [b3,d4,g4] [b3,d4,f4,g4] ~", // F G G7
})).s("gm_pad_poly").gain(0.5)

// other · synth brass 2
const synth_brass_2 = note(`<
  ~@12 A B C D E F G@2 H@4 I@2 J K L@2 ~@10 A B C D E F G@2 H@4 I@2 J K L@2 ~@2 M N O P A B C D E F G@2 H@4 I@2 J K H@4
  I@2 J K L@2 ~@11
>`.pickRestart({
  A: "e3@7 ~ f3@7 ~", B: "g3@8 c3@7 ~", C: "g3@15 ~", D: "d3@15 ~", E: "a3@8 c4@7 ~", F: "d4@7 ~ e4@7 ~",
  G: "[d4@31 ~]/2", H: "[c4@31 ~]/2", I: "[a3@31 ~]/2", J: "g3", K: "a3 b3", L: "c4/2", M: "a#3", N: "f3", O: "g3 b3",
  P: "d4 f4",
})).s("gm_synth_brass_2").gain(0.4).pan(0.4)

// chords · epiano2 · "Chorused Piano"
const epiano2 = note("<~@59 A B@2 C@2 ~@37>".pickRestart({
  A: "~@6 [c5,g5]!2 [c5,g5]@2 ~ [c5,f5]@3 [c5,e5] ~", // C5 F5 C
  B: "[[a#4,d5]@20 ~@2 [d5,g5]!2 [d5,g5]@2 ~ [d5,f5]@2 ~ [d5,e5] ~]/2", C: "[[g4,d5]@9 ~ [g4,c5]@4 [g4,b4]@17 ~]/2",
})).s("gm_epiano2").gain(0.5)

// other · pad new age · "Pad 1 (new age)"
const pad_new_age = note(`<
  ~@20 A B C D E F G H A B A I A B J K L M N@2 A B J K O P Q R A B C D E F G H A B A I ~@4 A B J K O P Q R A B C D E F G
  H A B C D E F G H A B A I ~@9
>`.pickRestart({
  A: "c4 g4 e5 g4 d5 c5 g4 c4", B: "~ g4 e5 g4 d5 c5 g4 c5", C: "~ e4 e5 e4 d5 c5 a4 a3, a3 ~@3",
  D: "~ e4 e5 e4 d5 c5 e4 c5", E: "c4 f4 e5 f4 d5 c5 f4 c4", F: "~ f4 e5 f4 d5 c5 f4 c5", G: "b3 e4 e5 e4 d5 c5 e4 c5",
  H: "c4 f4 e5 f4 d5 c5 g4 c5", I: "~@2 g4@2 e5@2 g4@2 d5@2 c5@2 g4@2 c5 ~", J: "d4 g4 d5 g4 c5 b4 g4 d4",
  K: "~@2 d4@2 d5@2 g4@2 c5@2 b4@2 g4@2 b4 ~", L: "b3 e4 b4 e4 a4 g#4 e4 b3",
  M: "~@2 e4@2 b4@2 e4@2 a4@2 g#4@2 e4@2 g#4 ~",
  N: "[c4@2 f4@2 c5@2 f4@2 a#4@2 a4@2 f4@2 c4@4 f4@2 c5@2 f4@2 a#4@2 a4@2 f4@2 a4 ~]/2", O: "c4 f4 c5 f4 a#4 a4 f4 a4",
  P: "a3@2 e4@2 c5@2 e4@2 b4@2 a4@2 e4@2 a4 ~", Q: "d4 g4 d5 g4 c5 b4 g4 b4",
  R: "d4@2 g4@2 d5@2 g4@2 c5@2 b4@2 g4@2 b4 ~",
})).s("gm_pad_new_age").gain(0.36)

// bass · synth bass 1
const bass = note(`<
  ~@4 A@2 B@2 C@2 D@2 A@2 B@2 D E B@2 A@2 E@2 D@2 C F A@6 B@2 C@2 D@2 A@2 B@2 D E B@2 A@2 E@2 D@2 C F A@4 G@2 B@2 A@2
  B@2 D E B@2 A@2 E@2 D@2 C F A@2 E@2 D@2 C F A@12 ~
>`.pickRestart({
  A: "c2 ~ c2!7 ~ c2!6", B: "g1 ~ g1!7 ~ g1!6", C: "e1 ~ e1!7 ~ e1!6", D: "f1 ~ f1!7 ~ f1!6", E: "a1 ~ a1!7 ~ a1!6",
  F: "f1 ~ f1!6 g1 ~ g1!6", G: "a#1 ~ a#1!7 ~ a#1!6",
})).s("gm_synth_bass_1").gain(0.6)

// bass · fretless bass
const bass_2 = note(`<
  ~@28 A@6 B@2 C@2 D@2 A@2 B@2 D E B@2 A@2 E@2 D@2 C F A@4 G@2 B@2 A@2 B@2 D E B@2 A@2 E@2 D@2 C F A@2 E@2 D@2 C F A@12
  ~
>`.pickRestart({
  A: "c2", B: "g1", C: "e1", D: "f1", E: "a1", F: "f1 g1", G: "a#1",
})).s("gm_fretless_bass").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@2 [x!4]!98 ~>").gain(0.6)

// drums · snare
const snare = s("sd").struct("<~@27 A B@3 C B@7 D B@7 E B@7 C B@3 A ~@3 F B@7 E B@7 C B@7 E B@3 C B@8 ~>".pickRestart({
  A: "~@12 x!4", B: "~ x ~ x", C: "~@4 x ~@7 x!4", D: "~@4 x ~@7 x ~ x!2", E: "~@4 x ~ x!3 ~@3 x!4", F: "~@10 x!6",
})).gain(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@60 [~@10 x!6] x ~@39>").gain(0.6)

// drums · crash
const crash = s("cr").struct("<~@28 A ~@3 A ~@7 A ~@7 A ~@7 A ~@2 B ~@4 A ~@7 A ~@7 A ~@7 A ~@2 B A ~@8>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.6)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~ [~@3 x]!27 ~@73>").gain(7.05)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [~@3 x]!27 [~ x ~ x ~ x ~ x]!72 ~>").gain(2.74)

// drums · shaker
const shaker = s("sh").struct("<~ [~ x ~ x] [~@3 x]!26 [~ x ~ x ~ x ~ x]!72 ~>").gain(0.54)

stack(
  pad_poly, synth_brass_2, epiano2, pad_new_age, bass, bass_2, kick, snare, low_tom, crash, vibraslap, cabasa, shaker
)

More by Erasure