Strudelify

El Scorcho

Weezer

KeyA♭ majorTempo75 bpm
0:00/0:00
// El Scorcho — Weezer
// 75 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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.

// chords · overdriven guitar · "Electric Guitar"
const overdriven_guitar = note(`<
  ~@3 A@8 ~@2 B@3 C B@2 C@2 A@6 ~@2 B@3 C B@2 C@2 D E D E B F B F G H I J ~@3 A@4 B@3 C B@2 C@2 B@3 C B@2 C K L@2
>`.pickRestart({
  A: "ab3 ~ ab4 ~ c5@2 ab4@2 db4@2 ab4 ~ f5@2 db5@2", B: "[ab2,eb3,ab3]!4 [db3,ab3,db4]!4",
  C: "[ab2,eb3,ab3]!4 [eb3,bb3,eb4]!4", D: "[ab2,eb3,ab3]!8 [db3,ab3,db4]!8", E: "[bb2,f3,bb3]!8 [eb3,bb3,eb4]!8",
  F: "[bb2,f3,bb3]!4 [eb3,bb3,eb4]!4", G: "b3@3 c4 e3@4", H: "~@2 ab3@2 bb3 ~ e4@2 eb4@8",
  I: "~@2 bb4@2 ab4@4 g4 ab4 eb4@2 gb4 ~@3", J: "~@2 c5 ~ b3 ~@2 b3 bb4 c5 ~@6",
  K: "[ab2,eb3,ab3]!4 [db3,ab3,db4]@2 [b2,gb3,b3]@2", L: "[ab2,eb3,ab3]/2",
})).s("gm_overdriven_guitar").gain(0.26)

// bass · fretless bass · "Bass Guitar"
const bass = note(`<
  ~@4 A ~@3 B C ~@3 D@3 E D@2 E F G H I J K ~@3 D@3 E D@2 E F L M L M D N D O P Q R S ~@7 D@3 E D@2 E F D@3 E D@2 E F
  T@2
>`.pickRestart({
  A: "~@2 db2 b1", B: "~@10 db3 e3 b2 bb2 ab2 gb2", C: "ab2 ~@7", D: "ab1!4 db2!4", E: "ab1!4 eb2!4",
  F: "ab1!4 db2@2 b1@2", G: "ab1 ~@7", H: "~@10 b1!2 bb1!2 a1!2", I: "ab1 ~@15", J: "~@10 bb1@2 ~ b1@2 ~", K: "c2 ~@15",
  L: "ab1!8 db2!8", M: "bb1!8 eb2!8", N: "bb1!4 eb2!4", O: "bb1@2 bb1@2 bb1@2 bb1@2 eb2!2 f2 eb2 g2 f2 eb2 g2",
  P: "ab1 ~@3", Q: "~@5 bb1 ab1 g1", R: "ab1 db2", S: "ab1!2 ~ c2 db2 ~@3", T: "ab1/2",
})).s("gm_fretless_bass").gain(0.26)

// other · electric guitar clean · "Elec. Guitar"
const electric_guitar_clean = note("<~ A@10 ~@10 A@6 ~@22 A@2 B A@4 ~@18>".pickRestart({
  A: "ab3 ~ ab4 ~ c5@2 ab4@2 db4 ~ ab4 ~ [e5,f5]@2 db5@2", B: "ab3 ~ ab4 ~ c5@2 ab4@2 db4 ~ ab4 ~ f5 ~@3",
})).s("gm_electric_guitar_clean").gain(0.36)

// other · distortion guitar · "Elec. Guitar"
const distortion_guitar = note(`<
  ~@13 A@3 B A@2 B C ~@8 A@3 B A@2 B C D E D E F G F G ~@11 A@3 B A@2 B C A@3 B A@2 B C ~@2
>`.pickRestart({
  A: "c4 ab4 c5 ab4 f4 ab4 f5 db5", B: "c4 ab4 c5 ab4 g4 bb4 g5 eb5", C: "c4 ab4 c5 ab4 ab3 db4 b3!2", D: "ab2!8 db3!8",
  E: "bb2!8 eb3!8", F: "ab2!4 db3!4", G: "bb2!4 eb3!4",
})).s("gm_distortion_guitar").gain(0.26)

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

// drums · snare
const snare = s("sd").struct("<A B@11 C B@11 D B@3 C B@7 E F@3 G B@10 D B@3 C B@15 C H ~>".pickRestart({
  A: "x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x!4", D: "~ x ~@2", E: "~@4 x ~@5 x!6",
  F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", G: "~ x ~ x ~ x ~ x ~ x ~ x!5", H: "x",
})).gain(0.26)

// drums · low tom
const low_tom = s("lt").struct("<A ~@19 B ~@3 C ~@11 D ~@7 E ~@18 F ~@7 G ~@2>".pickRestart({
  A: "~ x", B: "~@10 x ~@3 x!2", C: "~@12 x!4", D: "~@10 x!6", E: "~@11 x ~@4", F: "~@14 x!2", G: "~@15 x",
})).gain(0.26)

// drums · hihat
const hihat = s("hh").struct("<~ A@10 B C A@7 D A@3 E A@2 B C A@7 F ~@4 A@10 E B@3 G A@15 H ~@2>".pickRestart({
  A: "x!8", B: "x!16", C: "x!13 ~@3", D: "x!5 ~ x ~", E: "x!6 ~@2", F: "x!5 ~@3", G: "x!12 ~@4", H: "x!7 ~",
})).gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@11 B ~@7 C ~@3 D ~@3 B ~@11 E ~@3 F ~@18 C ~@8 G ~>".pickRestart({
  A: "~ x ~ x", B: "~@13 x!3", C: "~@14 x!2", D: "~@15 x", E: "~@12 x!4", F: "~@11 x ~@3 x", G: "x",
})).gain(0.26)

// drums · open hat
const open_hat = s("oh").struct("<~@11 A B C@7 ~@4 D ~@2 A B C@7 ~ E F E G C@4 ~@7 A@3 H C@7 I C@7 I ~@2>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!2", D: "~@5 x ~ x", E: "~ x!15", F: "x!16", G: "x!12 ~@4", H: "x!6 ~@2", I: "~@2 x!5 ~",
})).gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<[~ x] ~@43 [~@15 x] ~@29>").gain(0.26)

// drums · china
const china = s("cr").struct("<~ A ~@11 B@7 C A ~@7 B@7 D A ~ A ~ E B E B ~@11 B@7 F B@7 G A ~>".pickRestart({
  A: "x", B: "~ x ~ x", C: "~@2 x!2", D: "~ x", E: "x!2 ~ x", F: "x ~ x!6", G: "x ~ x!5 ~",
})).gain(0.26)

// drums · ride bell
const ride_bell = s("rd").struct("<~@21 x ~@52>").gain(0.26)

stack(
  overdriven_guitar, bass, electric_guitar_clean, distortion_guitar, kick, snare, low_tom, hihat, mid_tom, open_hat,
  high_tom, china, ride_bell
)

More by Weezer