Strudelify
Paperlate cover art

Archive #2 (1976 - 1992)

Paperlate

Genesis

KeyD majorTempo120 bpm
0:00/0:00
// Paperlate — Genesis
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 7 "Pizza Hut.3" named as a string part, played on pizzicato strings (its brass section patch is not one)
// note: duplicate parts dropped: ch 2 "guitar" overdriven guitar (copy of ch 3 "guitar" electric guitar muted)
// note: Full arrangement: all 95 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 · [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 · electric guitar muted · "guitar"
const electric_guitar_muted = note(`<
  ~ A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 D E D E D E F G D E D E D E F G A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 D E D E D E F G D E
  D E D E F G H I J@2 K I L M A@2 C@2 A@2 B@2 A@2 C@2 A@2 C@2 A@2 C@4
>`.pickRestart({
  A: "[~@2 [a4,d5,f#5]@2 [g4,d5,e5]@3 [b4,d5,g5]@3 f#5 [a4,d5,e5]@2 [a4,d5,f#5]@3]/2", // D Em7 G Asus4 D
  B: "[~@2 [a4,d5,f#5]@2 [g4,d5,f#5] [g4,d5,e5]@2 [b4,d5,a5]@3 d5 [a4,d5,e5]@2 [a4,d5,f#5]@3]/2", // D Gmaj7 Em7 Bm7 Asus4 D
  C: "[~@2 [a4,d5,f#5] a5 [b4,d5,e5]@3 [d4,g4,c5,e5]@2 [d4,g4,c5,e5]@2 d5 [g4,d5,e5]@2 [a4,d5,f#5]@2]/2", // D E7 C Em7 D
  D: "~ [d4,a4,f5,c6] [d4,f#4,d5,a5]@2, d3 ~", E: "[e3,d5,g5]@3 [f#3,d5,a5]@3 [g3,d5,b5]@2",
  F: "[a3,c5,e5,g5,a5]@3 [c5,e5,g5]@3 e5@2, ~@3 a3@5", G: "[a3,c5,e5,g5,a5]@3 d3 e3 g3 a3@2, ~@3 [e5,g5,a5,c6]@5",
  H: "[b5,d6,f6,a6]@3 [c6,e6,g6,b6]@5", I: "[f5,a5,c6,e6]@3 [d5,f5,a5,c6]@5",
  J: "[~@2 [b5,d6,f6,a6]@2 [a5,c6,e6,g6]@3 [f5,a5,c6,e6]@2 [e5,g5,b5,d6]@7]/2", K: "~ [b5,d6,f6,a6] [a5,c6,e6,g6]@2",
  L: "~ [d6,d#6,g6,a#6] [a5,c6,e6,g6]@2", M: "[f5,a#5,d6,f6]@3 [f5,a5,c6,f6]@2 [g5,b5,d6,g6]@3",
})).s("gm_electric_guitar_muted").gain(0.72)

// bass · fretless bass · "bass"
const bass = note(`<
  ~ A B A C A C D@2 A B A C A C D@2 E F E F E F G H E F E F E F G H A B A C A C D@2 A B A C A C D@2 E F E F E F G H E F
  E F E F G H I J@7 A C D@2 A B A C A C D@2 A C D@2 A B D@4
>`.pickRestart({
  A: "d2!2 c2!2", B: "g1@3 d2@3 a1 b1", C: "g1@3 d2@3 e2 f#2", D: "[b1@2 b1@2 g1@2 g1 a1@2 a1@2 a1 c2@2 d2@2]/2",
  E: "d1 ~", F: "e1@3 f#1@3 g1@2", G: "a1@3 a1@5", H: "a1@3 d1 e1 g1 a1@2", I: "a1!2 a1@2 a1@2 a1@2", J: "a1!4",
})).s("gm_fretless_bass").gain(0.51)

// other · brass section · "brass"
const brass_section = note("<~@65 A B C@2 D E F G ~@22>".pickRestart({
  A: "~@5 d#4 d4 c4", B: "d4 e4@2 g4@2 a4@2 ~", C: "[~@2 a4@2 g4@2 e4 d4@2 e4@2 g4@3 ~@2]/2",
  D: "~@2 g4@2 a4@4 g4@4 e4 d4 c4@2", E: "e4@2 d4 c4 d4 e4 ~@2", F: "~@8 a#4@3 f4@2 e4@3", G: "f4 g4@2 g4@5",
})).s("gm_brass_section").gain(0.46)

// chords · brass section · "Brass Sect 1.2"
const brass_section_2 = note(`<
  ~@9 A B ~ C A B D@2 ~@14 E F A B ~ C A B D@2 G B ~ C A B D@2 ~@24 H I D@2 A B ~ J A B D@2 A B D@2 A B D@2 K@2
>`.pickRestart({
  A: "~@5 [d5,e5,g5] ~@2", B: "~@14 [d5,f#5,a5] ~", C: "~@3 [a4,d5,e5]@2 [a4,d5,f#5]@2 ~",
  D: "[~@7 e5@2 e5@2 d5 e5@2 d5 ~]/2", E: "~@7 e5", F: "e5 d5 e5 g5!2 e5@2 ~", G: "~@10 [d5,e5,g5] ~ [e5,g5,a5] ~@3",
  H: "~@5 [d5,e5,g5] [e5,g5,a5] ~", I: "~@12 [d5,f#5,a5]@2 [f#5,a5,c#6] ~", J: "~@6 [d5,e5,a5] ~@9",
  K: "[~@7 e5@2 e5@2 d5 e5@2 [d5,a5] ~]/2", // D5
})).s("gm_brass_section").gain(0.46)

// other · pizzicato strings · "Pizza Hut.3"
const pizzicato_strings = note("<~@17 A ~ A ~ A ~@3 A ~ A ~ A ~@19 A ~ A ~ A ~@3 A ~ A ~ A ~@33>".pickRestart({
  A: "~ a4 d4@2",
})).s("gm_pizzicato_strings").gain(0.51)

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

// drums · snare
const snare = s("sd").struct(`<
  A B C B D C E C F C@2 G H C I C J ~ K ~ L M N O C ~ N M O ~ P Q E ~ C@2 R C S C@4 G H C I C J ~ K ~ L M N O C ~ N M O
  ~ P Q E ~@8 C E C F C@2 G H C I C J C E C F C@3 J C T
>`.pickRestart({
  A: "~@4 x!4", B: "x!2 ~ x", C: "~ x ~ x", D: "~@2 x ~@2 x!2 ~", E: "~@2 x ~@3 x!2", F: "~ x ~ x!3 ~@2",
  G: "~@2 x!2 ~@2 x ~", H: "x ~ x ~@2 x!3", I: "~@2 x ~@2 x ~ x", J: "~ x ~ x ~ x!2 ~", K: "x ~ x!2 ~@2 x ~",
  L: "~@2 x ~@2 x ~@2", M: "~ x ~@2", N: "~@3 x", O: "~@3 x ~@2 x ~", P: "~ x", Q: "x!4 ~@3 x", R: "~ x ~ x ~ x ~ x",
  S: "~ x ~ x ~@2 x ~", T: "~ x ~ x!4 ~",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@17 A ~ B C ~ D E ~ A F ~ F G C ~@2 B ~@15 A ~ B C ~ D E ~ A F ~ F G C ~@32
>`.pickRestart({
  A: "~@5 x!2 ~", B: "~@3 x", C: "x!2 ~@6", D: "~@2 x!2 ~@4", E: "~ x ~@2", F: "~ x!2 ~@5", G: "~@5 x ~@2",
})).gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~ A B@2 C B C B D B@4 E C B F ~@8 G ~@7 A B@2 C B H I J B@4 E C B F ~@8 G ~@7 K L M N O M P Q B C B D B@4 E C B F B C
  B D B@3 F B R
>`.pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x!7 ~", D: "x!6 ~ x", E: "~ x!7", F: "x!4 ~ x ~ x", G: "x!2 ~@2", H: "x!2 ~ x ~ x ~ x",
  I: "x!2 ~ x!3 ~ x", J: "x!2 ~ x!3 ~@2", K: "x ~ x ~@2 x!2 ~", L: "x!2 ~ x ~ x ~@2", M: "x!4", N: "~ x ~ x ~@2 x ~",
  O: "~ x!2 ~ x ~ x ~", P: "x ~ x ~ x!2 ~ x", Q: "x!2 ~ x ~@4", R: "x!4 ~ x ~@2",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@17 A ~ B ~@2 C ~@2 A D E ~ B ~@19 A ~ B ~@2 C ~@2 A D E ~ B ~@32 F>".pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~ x!2 ~", C: "x", D: "x!2 ~ x ~@4", E: "~@3 x", F: "~@5 x ~@2",
})).gain(0.8)

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

// drums · high tom
const high_tom = s("ht").struct("<~@17 A ~ A ~ B ~@3 A ~ C ~ A ~@19 A ~ A ~ B ~@3 A ~ C ~ A ~@32 D>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~@5 x ~@2", D: "~ x",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A B C D E F G H I J K L M N O G P ~@15 A B C D E F G H I J K L M N O G ~@7 B ~@21 B
>`.pickRestart({
  A: "~ x", B: "~@3 x", C: "~@2 x ~@2 x ~@2", D: "~@3 x ~@2 x ~", E: "~@5 x!2 ~", F: "~ x ~ x", G: "x ~ x!2 ~@4",
  H: "x!2 ~ x", I: "~@4 x!2 ~@2", J: "x ~@2 x ~@2 x ~", K: "x", L: "x ~@4 x!2 ~", M: "x!2 ~@2", N: "~@2 x!2 ~@2 x ~",
  O: "x ~@2 x ~@4", P: "~ x ~@2",
})).gain(0.8)

// drums · cowbell
const cowbell = s("cb").struct("<~@18 x ~@31 x ~@44>").gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@18 A ~ B C@2 ~@4 D A E ~ C A ~@17 A ~ B C@2 ~@4 D A E ~ C A ~@30>".pickRestart({
  A: "~@3 x ~@4", B: "x", C: "~ x ~@2", D: "~ x", E: "~@3 x",
})).gain(0.8)

// drums · bongos
const bongos = s("bongo:4").struct("<~@28 [~ x ~@2] ~@31 [~ x ~@2] ~@34>").gain(1.89)

stack(
  electric_guitar_muted, bass, brass_section, brass_section_2, pizzicato_strings, kick, snare, low_tom, pedal_hat,
  mid_tom, open_hat, high_tom, crash, cowbell, ride, bongos
)

More by Genesis