Strudelify

Back in the Day

Local H

KeyE minorTempo170 bpm
0:00/0:00
// Back in the Day — Local H
// 170 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Dist. Bass - Scott" named as a bass, played on electric bass finger (its distortion guitar patch is not one)
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass finger · "Clean Bass - Scott Lucas"
const bass = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D E@8 F G E@2 F G E@4 A B C D A B C D E@8 F G E@2 F G E@4 A B C D A B C
  D A B C D A B C D H@4 I@4 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B
  C D J
>`.pickRestart({
  A: "e1!3 g1!3 b1!2", B: "f1!3 a1!3 c2!2", C: "b1!3 g1!3 b1!2", D: "a1!3 f1!5", E: "e1@2 ~ g1@2 ~ b1@2", F: "f1 c2!3",
  G: "c2@2 c2!6", H: "e1 ~@3", I: "e1@3 c2@2 c2!3", J: "e1 ~@7",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · distortion guitar · "Guitar - Scott"
const distortion_guitar = note(`<
  ~@16 A B C D A B C D E@8 F G E@2 F G E@4 A B C D A B C D E@8 F G E@2 F G E@4 A B C D A B C D A B C D A B C D H@4 I@4 A
  B C D A B C D A B C D A B C D ~@16 A B C D A B C D A B C D A B C D J
>`.pickRestart({
  A: "[e2,b2,e3]!3 [g2,d3,g3]!3 [b2,f#3,b3]!2", B: "[f2,c3,f3]!3 [a2,e3,a3]!3 [c3,g3,c4]!2",
  C: "[b2,f#3,b3]!3 [g2,d3,g3]!3 [b2,f#3,b3]!2", D: "[a2,e3,a3]!3 [f2,c3,f3]!5",
  E: "[e2,b2,e3]@2 ~ [g2,d3,g3]@2 ~ [b2,f#3,b3]@2", F: "[f2,c3,f3] [c3,f3]!3", G: "[c3,f3]@2 [c3,g3,c4]!6",
  H: "[e2,b2,e3]@2 ~ f4@2 f4!3", I: "[e2,b2,e3]@3 [c3,f3]@2 [c3,f3]!3", J: "[e2,b2,e3] ~@7",
})).s("gm_distortion_guitar").gain(0.57)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@11 B C D C D C D C D A@8 C D A@2 C D A@4 C D C D C D C D A@8 C D A@2 C D A@4 C D C D C D C D C D C D C D C D ~@4
  E@4 C D C D C D C D C D C@3 D C F ~@4 A@11 B D C D C D C D C G C D C D C D C H
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "x!2 ~ x", C: "x ~@2 x ~ x ~@2", D: "x ~@2 x ~ x ~ x", E: "x!2", F: "x ~@2 x ~@4",
  G: "~@3 x ~ x ~ x", H: "x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@11 B C@8 A@7 D C ~ A@2 C ~ A@3 B C@8 A@7 E C ~ A@2 C ~ A@3 B C@16 F@7 G C@11 H C@3 I ~@4 A@11 B C@3 J C@4 K@8 L
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "x ~@2 x ~ x!3", C: "~ x ~ x", D: "x ~@5 x ~@3 x ~@2 x!2 ~", E: "x ~@2 x ~ x ~ x",
  F: "~ x ~@2", G: "~@4 x ~@5 x ~@2 x!2 ~", H: "~@2 x ~@4 x", I: "~@2 x ~ x!4", J: "~@4 x ~@6 x!4 ~", K: "x!4", L: "x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@33 A ~@3 A ~@21 A ~@3 A ~@20 B@7 ~@12 C ~@37>".pickRestart({
  A: "~@2 x!6", B: "~@6 x!2", C: "~@11 x!3 ~@2",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@88 [~@3 x]!3 ~@12 [~@10 x!2 ~@4] ~@37>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@7 A ~@3 A ~@103 A ~@3 A ~@21>".pickRestart({
  A: "~@3 x",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A@3 B A@3 B A@3 C D@17 E D@3 E D@21 E D@3 E D@43 F ~@4 A@3 B A@3 B A@3 C D@16 G
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "x ~@2 x ~@4", C: "x ~@2 x ~ x ~ x", D: "x!4", E: "x!2 ~@2", F: "x!3 ~", G: "x",
})).gain(0.72)

stack(bass, distortion_guitar, kick, snare, low_tom, mid_tom, open_hat, crash)

More by Local H