Strudelify
Girls & Boys cover art

1994 · Parklife

Girls & Boys

Blur

KeyC minorTempo120 bpm
0:00/0:00
// Girls & Boys — Blur
// 120 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 144 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// bass · electric bass finger
const bass = note(`<
  ~@8 A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A
  B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H ~@7 I A B C D E F G H A B C D E F G H A B C D E F G H A
  B C D E F G H A B C D E F G H
>`.pickRestart({
  A: "f1@2 ~@2 g1@2 g2@3 ~@3 f1@2 ~@2 g1@2 g2@3 ~@3", B: "f1@2 ~@2 g1@2 g2@3 ~@3 f2@3 gb2@3 g2@6",
  C: "bb1@2 ~@2 c2@2 c3@3 ~@3 bb1@2 ~@2 c2@2 c3@3 ~@3", D: "bb1@2 ~@2 c2@2 c3@3 ~@3 c3@3 b2@3 c3@6",
  E: "e1 f1 c2@2 e1 f1 c2@2", F: "e1 f1 c2@2 a1 bb1 b1@2", G: "eb2 eb3 eb2 eb3", H: "eb2@2 eb3@2 eb3 d3 eb3@2",
  I: "~@4 eb3 d3 eb3@2",
})).s("gm_electric_bass_finger").gain(0.8)

// bass · electric bass finger
const bass_2 = note(`<
  ~@8 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C
  D ~@4 A B C D ~@12 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C D ~@4 A B C D ~@4
>`.pickRestart({
  A: "~ gb1 ~@5 gb1 ~@4", B: "~ gb1 ~@10", C: "~ b1 ~@5 b1 ~@4", D: "~ b1 ~@10",
})).s("gm_electric_bass_finger").gain(0.56)

// other · distortion guitar · "Graham"
const distortion_guitar = note(`<
  ~@8 A@7 B ~@7 C D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G D@2
  E@2 ~@2 F G D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G ~@15 C D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G D@2 E@2 ~@2 F G
>`.pickRestart({
  A: "[g4,b4,d5]!4", B: "[g4,b4,d5]", C: "~@2 [db4,gb4] [c4,f4]", D: "g2!2 b3 bb3 g2!2 b3 bb3",
  E: "c3!2 b3 bb3 c3!2 b3 bb3", F: "g3 d3 eb3 d3 g3 d3 eb3 d3", G: "g3 d3 eb3 d3 [db4,gb4]@2 [c4,f4]@2",
})).s("gm_distortion_guitar").gain(0.39)

// other · electric guitar muted · "Effect"
const electric_guitar_muted = note(`<
  ~@28 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A B ~@6 A
  B ~@2
>`.pickRestart({
  A: "f3!4 e3!4 eb3!3 [d3,eb3] d3!3 db3!4 c3!4 b2", B: "b2!2 [bb2,b2] bb2!3 a2!4 ab2!4 g2!3 [gb2,g2] gb2!3 f2!3",
})).s("gm_electric_guitar_muted").gain(0.39)

// other · distortion guitar · "Guitar 2"
const distortion_guitar_2 = note("<~@47 A@8 B ~@31 A@8 B ~@15 A@8 C@24 D>".pickRestart({
  A: "[~@21 g5@2 ~ bb5@6 ~@3 g5@2 ~ bb5@6 ~@3 g5@2 ~ bb5@6 ~@3 g5@2 ~ bb5@6 ~@3 g5@2 ~ g5@6 ~@3 g5@2 ~ g5@6 ~@3 g5@2 ~ g5@6 ~@3 g5@2 ~ g5@6 ~@3 g5@2 ~ f5@6 ~@3 g5@2 ~ f5@6 ~@3 g5@2 ~ f5@6 ~@3 g5@2 ~ f5@6 ~@3 g5@2 ~ bb4@6 ~@3 g5@2 ~ bb4@6 ~@3 g5@2 ab5, ~@23 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@11]/8",
  B: "bb4@6 ~@3 g5@2 ~ bb4@6 ~@6, ~@11 ab5@2 ~@11",
  C: "[bb4@6 ~@3 g5@2 ~ bb4@6 ~@3 g5@2 ~ bb5@6 ~@3 g5@2 ~ bb5@6 ~@3 g5@2 ~ bb5@6 ~@3 g5@2 ~ bb5@6 ~@3 g5@2 ~ g5@6 ~@3 g5@2 ~ g5@6 ~@3 g5@2 ~ g5@6 ~@3 g5@2 ~ g5@6 ~@3 g5@2 ~ f5@6 ~@3 g5@2 ~ f5@6 ~@3 g5@2 ~ f5@6 ~@3 g5@2 ~ f5@6 ~@3 g5@2 ~ bb4@6 ~@3 g5@2 ~ bb4@6 ~@3 g5@2 ab5, ~@11 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@10 ab5@2 ~@11]/8",
  D: "bb4@6 ~@3 g5@2 ~ bb4@6 ~@3 g5@2 ab5, ~@11 ab5@2 ~@11",
})).s("gm_distortion_guitar").gain(0.29)

// other · drawbar organ · "Damon"
const drawbar_organ = note(`<
  ~@16 A B C ~ D E@2 F G ~ H I J K L M N@4 O@2 P Q N@4 O@2 P ~@8 B R B S T J U@2 V G ~ W I J K L M N@4 O@2 P ~ N@4 O@2 P
  ~ X@2 Y@2 ~@3 Q N@4 O@2 P ~ N@4 O@2 P ~ N@4 O@2 P ~ N@4 O@2 P ~ X@2 Y@2 ~@4 Z@8
>`.pickRestart({
  A: "c4!2 d4 c4 bb3@4", B: "~@7 c4", C: "c4!2 d4 bb3@4 ~", D: "a3!3 bb3 a3@4", E: "[~@5 g3 a3 bb3@9]/2",
  F: "~@3 bb3 db4!2 c4 ~", G: "c4!2 d4 c4@2 bb3@3", H: "c4!2 d4 bb3@2 ~@3", I: "~@7 bb3", J: "a3!2 bb3 bb3@2 a3@3",
  K: "~@5 g3 a3 bb3", L: "bb3@4 ~@2 bb3!2", M: "bb3!3 ~ db4!2 c4@2",
  N: "[bb3!2 c4 bb3@2 bb3 c4 bb3@2 bb3 c4 bb3@2 bb3 c4 bb3@2 bb3 c4 bb3@2 bb3 c4 bb3@2 bb3 c4 bb3@4 ~]/4",
  O: "[f4 eb4@2 d4@2 c4@2 bb3@2 c4@2 d4 bb3@2 g3@2]/2", P: "bb3", Q: "~@4 db4!2 c4@2", R: "c4!2 d4 bb3@5",
  S: "c4!2 d4 c4@2 bb3 g3@2", T: "~@7 a3", U: "[~@5 g3 a3 bb3@5 ~@3 bb3]/2", V: "bb3!3 bb3@2 db4 c4 bb3",
  W: "c4!3 d4@2 bb3@2 ~", X: "[c5@2 bb4@2 g4@2 c5 bb4@2 g4@3 ~@4]/2", Y: "[c5@2 bb4@2 g4@2 c5 g4@5 ~@4]/2", Z: "g4/8",
})).s("gm_drawbar_organ").gain(0.8)

// drums · kick
const kick = s("bd").struct("<~@8 [x!2]!136>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<[x!4]!8 [~ x ~ x]!136>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!4]!136>").gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [~ x ~ x ~ x ~ x]!136>").gain(0.8)

stack(
  bass, bass_2, distortion_guitar, electric_guitar_muted, distortion_guitar_2, drawbar_organ, kick, snare, hihat,
  open_hat
)

More by Blur