Strudelify
He's A Rebel cover art

1962

He's A Rebel

The Crystals

KeyF majorTempo120 bpm
0:00/0:00
// He's A Rebel — The Crystals
// 120 bpm, 2/2, key F major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "Vocals" electric guitar jazz (copy of ch 3 "1st Track" acoustic guitar steel); ch 7 "Violin" string ensemble 2 (copy of ch 3 "1st Track" acoustic guitar steel)
// note: Full arrangement: all 55 bars on a 16-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 · [...]/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.

// other · synth brass 1 · "2nd Track"
const synth_brass_1 = note(`<
  A@2 B@2 C D E D F G H I C D E D F J K L M N M O P Q R S T U V W X Y Z K AA AB M N M O P Q R S T U V W X Y AC@3
>`.pickRestart({
  A: "~@6 db5 ~ b4 ~ a4 ~@5", B: "~@6 db6 ~ b5 ~ a5 ~@5", C: "~@12 b3@3 ~", D: "db4 ~ db4@3 ~ d4 ~ db4@5 ~@3",
  E: "~@8 a3@3 ~ b3@3 ~", F: "a4 ~@7 gb4 ~@7", G: "d4@5 ~@3 d4@5 ~@3", H: "d4@8 ~@4 ab3@3 ~", I: "d4@11 ~@5",
  J: "d4@5 ~@3 d4@4 ~@4", K: "eb4@5 ~@3 eb4@3 ~ eb4@3 ~", L: "ab4@5 ~@3 a4@5 ~@3", M: "~@4 bb4 ~ bb4 ~ bb4 ~@7",
  N: "d4@5 ~@3 d4@3 ~ d4@3 ~", O: "g4@5 ~@3 a4 ~ a4 ~ a4 ~@3", P: "~@2 g4 ~ g4 ~ bb4 ~ bb4 ~ g4 ~ g4 ~@3",
  Q: "~@2 a4!3 ~ a4 ~ a4@3 ~ gb4@3 ~", R: "~@4 bb4 ~ bb4 ~ bb4 ~ a4 ~ g4@3 ~", S: "g4@5 ~@3 a4 ~ a4 ~ a4@3 ~",
  T: "bb4 ~ bb4 ~ bb4 ~@7 f4@3 ~", U: "bb4 ~ bb4 ~ bb4 ~@11", V: "g4@5 ~@3 g4@3 ~ g4@3 ~", W: "a4@5 ~@3 a4@3 ~ a4@3 ~",
  X: "~@4 bb4@9 ~@3", Y: "a4 ~ a4@11 ~@3", Z: "bb4 ~@7 g4 ~@7", AA: "e4@5 ~@3 e4 ~ e4@3 ~ e4 ~",
  AB: "a4@4 ~@2 a4 ~ a4@3 ~ a4@3 ~", AC: "[~@4 bb4@17 ~@3 bb5@11 ~@13]/3",
})).s("gm_synth_brass_1").gain(0.64).pan(0.1)

// other · synth strings 1 · "3rd Track"
const synth_strings_1 = note(`<
  ~@8 A B C D ~@4 A E F G H I H J K L M N O P Q R S T U I V W H I H J K L M N O P Q R S T X@3
>`.pickRestart({
  A: "gb4 ~@7 db4 ~@7", B: "a3@5 ~@3 a3@5 ~@3", C: "ab3 ~", D: "ab3@11 ~@5", E: "a3@5 ~@3 a3@4 ~@4",
  F: "a3@5 ~@3 b3@3 ~ b3@3 ~", G: "d4@5 ~@3 eb4@5 ~@3", H: "~@4 f4 ~ f4 ~ f4 ~@7", I: "bb3@5 ~@3 bb3@3 ~ bb3@3 ~",
  J: "a3@5 ~@3 eb4 ~ eb4 ~ eb4 ~@3", K: "~@6 g4 ~ g4 ~@7", L: "~@2 gb4!3 ~ gb4 ~ gb4@3 ~@5", M: "~@4 g4 ~ g4 ~ g4 ~@7",
  N: "eb4@5 ~@3 f4 ~ eb4 ~ eb4@3 ~", O: "f4 ~ f4 ~ f4 ~@7 d4@3 ~", P: "g4 ~ g4 ~ g4 ~@11",
  Q: "eb4@5 ~@3 eb4@3 ~ eb4@3 ~", R: "f4@5 ~@3 f4@3 ~ f4@3 ~", S: "~@4 f4@9 ~@3", T: "f4 ~ eb4@11 ~@3",
  U: "g4 ~@7 d4 ~@7", V: "bb3@5 ~@3 d4 ~ c4@3 ~ d4 ~", W: "eb4@4 ~@2 f4 ~ f4@3 ~ eb4@3 ~",
  X: "[~@4 f4@17 ~@3 f5@11 ~@13]/3",
})).s("gm_synth_strings_1").gain(0.64)

// bass · acoustic bass · "Bass"
const bass = note(`<
  A@7 B C D E F A@3 B C D G H I J I K L D J M I J L K I K J L N O I J I K L D J M I J L K I K P Q@2
>`.pickRestart({
  A: "a1@3 ~@5 e2@3 ~ e2 ~ e2 ~", B: "a1@3 ~@5 e2@3 ~ a2 ~ ab2 ~", C: "gb2@3 ~@5 db3@3 ~ gb2 ~ gb2 ~",
  D: "d2@3 ~@5 a2@3 ~ d2 ~ d2 ~", E: "e2@3 ~@5 b2@3 ~ b2 ~ b2 ~", F: "e2@3 ~@5 b2@3 ~ e2 ~ e2 ~",
  G: "b2@3 ~@5 gb2@3 ~ b1 ~ b1 ~", H: "e2@3 ~ e2@3 ~ f2@3 ~ f2 ~ f2 ~", I: "bb1@3 ~@5 f2@3 ~ bb1 ~ bb1 ~",
  J: "g2@3 ~@5 d3@3 ~ g2 ~ g2 ~", K: "f2@3 ~@5 c3@3 ~ f2 ~ f2 ~", L: "eb2@3 ~@5 bb2@3 ~ eb2 ~ eb2 ~",
  M: "eb2@3 ~@5 f2@3 ~ f2 ~ f2 ~", N: "c2@3 ~@5 g2@3 ~ c3 ~ c3 ~", O: "f2@3 ~ f3@3 ~ f2@3 ~ f2 ~ f2 ~",
  P: "bb1@3 ~@5 f2@3 ~ f2 ~ f2 ~", Q: "[bb1@3 ~ f2@3 ~ bb1@11 ~@13]/2",
})).s("gm_acoustic_bass").gain(0.48).pan(0.2)

// drums · kick
const kick = s("bd").struct("<[x ~@6 x!2 ~ x ~@3 x ~]!53 [x ~@6 x!2 ~@7] ~>").gain(0.24)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!53 [~ x ~@2] ~>").gain(0.34)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!53 [x!5 ~@3] ~>").gain(0.27)

stack(synth_brass_1, synth_strings_1, bass, kick, snare, hihat)

More by The Crystals