Strudelify

And the Cradle Will Rock...

Van Halen

KeyA minorTempo114 bpm
0:00/0:00
// And the Cradle Will Rock... — Van Halen
// 114 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 58 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(114/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 · piano
const piano = note(`<
  A B@2 C D E@2 F G H ~ I ~ J K L A M@2 N@2 O@3 P Q@2 R S T U V A B@2 W D X@3 P Y Z AA@2 AB AC AD@2 A B@2 C D E@2 F G
>`.pickRestart({
  A: "~@12 e3 ~ g3 ~", B: "[[a3,e4] ~@5 [g4,c5] ~@7 [d4,g4]@11 ~ a3 ~ e3 ~ g3 ~]/2",
  C: "[a3,e4] ~ [a3,e4] ~@7 [g4,c5] ~@5", D: "~@10 g3 ~ e3 ~ g3 ~", E: "[~@6 [g4,c5] ~@7 [d4,g4]@7 ~@7 e3 ~ g3 ~]/2",
  F: "~@2 [a3,e4] ~@7 [g4,c5] ~@3 [a4,d5]@2", G: "~@2 [g4,d5] ~ [a4,d5]@5 ~@3 [a4,d5]@3 ~",
  H: "c4 ~ c4 ~ [g4,c5,f5] ~ c4 ~ c4 ~ [g4,c5,e5] ~ c4 ~ c4 ~", // Csus4 C
  I: "a#3 ~ a#3 ~ [f4,a#4,c5,f5] ~ [f4,a#4,c5,f5] ~ a#3 ~ a#3 ~ [f4,a#4,d5] ~ [f4,a#4,d5] ~", // Fsus4 A#
  J: "c4 ~ [g4,c5,f5] ~ [g4,c5,f5] ~ c4 ~ c4 ~ [g4,c5,e5] ~ c4 ~ c4 ~", // Csus4 C
  K: "[c4,g4,c5,f5]@3 ~@3 [g4,c5,f5]@3 ~ [g4,c5,e5] ~ c5@3 ~", // Csus4 C
  L: "[a#3,f4,a#4,d5]@3 ~ [a#3,f4,a#4,d5] ~ [f4,a4,d5]@4 ~@2 [a#3,f4,a#4,d5]@3 ~", // A# Dm A#
  M: "[~@2 [a3,e4] ~@7 [g4,c5] ~@3 [d4,g4]@11 ~ a3 ~ e3 ~ g3 ~]/2", // A5 C5 G5
  N: "[[a3,e4] ~@5 [g4,c5] ~@7 [g3,d4,a4,d5]@11 ~ g3 ~ e3 ~ g3 ~]/2", // A5 C5 Gsus2
  O: "[a3@2 [a3,e4]@3 ~@5 [g4,c5] ~@3 [d4,g4]@7 ~@3 [g4,c5] ~@3 [a4,d5] ~ [g4,c5]@7 ~@3 [g4,c5]@3 ~@5, e4 ~@47]/3", // A5 C5 G5 C5 D5 C5
  P: "g3 ~ g3@4 ~@2 g3@3 ~ g3@3 ~",
  Q: "[f3 ~@3 [c4,f4,a4] ~ f3 ~ f3 ~ [c4,f4,g4] ~@3 [f3,c4,f4,g4]@4 [f3,c4,f4,a4] ~ [f3,c4,f4,a4]@4 ~@2 [f3,c4,a#4]@4 ~@2]/2", // F Csus4 Fsus2 F Fsus4
  R: "[d#4,a#4] ~ d#4 ~ [d#4,g4] ~ d#4 ~ d#4 ~ [d#4,a4]@3 ~ d#4@2", // D#5 D# D#dim
  S: "~@2 [d#4,a#4] ~ [d#4,a#4]@4 ~@2 [d#4,c5]@3 ~ [d#4,a#4] ~", T: "~@7 [f4,c5,f5,g5]",
  U: "~@2 [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@4 ~@6 [f4,c5,f5,a5] ~", // F
  V: "[a#4,d#5,g5,d#6]@3 ~@3 [a#4,d#5,a5,d#6]@3 ~@3 [d#4,a#4,d#5,g5]@3 ~", W: "~@2 [a3,e4] ~@7 [g4,c5] ~@5",
  X: "[a3@2 [a3,e4]@3 ~ [g4,c5] ~@3 [g4,c5] ~@3 [d4,g4]@7 ~@3 [g4,c5] ~@3 [a4,d5] ~ [g4,c5]@7 ~@3 [g4,c5]@3 ~@5, e4 ~@47]/3", // A5 C5 G5 C5 D5 C5
  Y: "[c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~ [g4,c5,e5] ~ [c4,g4,c5,e5]@3 ~ [a#3,f4,g4,d5]@2, ~@4 c4 ~@3", // C Gm7
  Z: "~@2 [a#3,f4,g4,d5] ~ [a#3,f4,g4,d5] ~ [a#3,f4,g4,d5] ~ [f4,g4,d5] ~ e5@4 ~@2", // Gm7 G7
  AA: "[f5@3 ~ e5 ~ f5@3 ~ e5 ~ [c5,f5]@9 ~@3 d#5 ~ d5@3 ~@3]/2", AB: "~@9 c5 ~ b4 ~@4", AC: "~@8 f3 ~ a#4 ~ a4 ~ g4 ~",
  AD: "[[e4,g4]@4 ~@2 [e4,g4]@4 ~@2 [d#4,g4]@15 ~@5]/2", // Em D#
})).s("gm_piano").gain(0.41).pan(0.1)

// other · harpsichord
const harpsichord = note(`<
  ~@8 A ~ B ~ C ~ D E ~ F A F G ~@3 A ~@3 H ~@2 I J F A F G ~@3 A ~ K ~ L M@2 N@2 ~@7 O A
>`.pickRestart({
  A: "a5@8 ~@4 a5@3 ~", B: "~@6 c4@6 ~@2 c4 ~", C: "~@8 [a#3,f4]@3 ~@5", D: "~@6 c4@5 ~@3 c4 ~", E: "~@8 f4 ~ f4 ~@5",
  F: "a5@11 ~@5", G: "~@8 d5 ~ d5 ~ c5@3 ~", H: "~@13 a#4 c5 a#4", I: "~@10 c5 ~ c5 ~ b4 ~", J: "g4 ~ f#4 ~ g4@3 ~@9",
  K: "~@8 a#3 ~ a#3@4 ~@2", L: "~@10 a#4@3 ~ c5 ~", M: "[c5@3 ~ b4 ~ [c5,d5] ~@5 f3@9 ~@11]/2",
  N: "[c5@3 ~ b4 ~ c5@3 ~ b4 ~ c5@15 ~@5]/2", O: "[c5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~ [d5,g5] ~@7",
})).s("gm_harpsichord").gain(0.41).pan(0.4)

// chords · piano
const piano_2 = note(`<
  A B C D@2 E A F G ~ H ~ I J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q R S T U A B V W@2 X@2 O@2 ~ Y Z@2 AA@2 AB ~ A B C D@2 E A F G
>`.pickRestart({
  A: "~@12 e3 ~ g3 ~", B: "~@2 [a3,e4] ~@7 [g4,c5] ~@5", C: "~@10 a3 ~ e3 ~ g3 ~",
  D: "[[a3,e4] ~ [a3,e4] ~@3 [g4,c5] ~@7 [g3,d4,a4,d5]@11 ~ g3 ~ e3 ~ g3 ~]/2", // A5 C5 Gsus2
  E: "a3@2 [a3,e4]@3 ~@5 [g4,c5] ~@5, e4 ~@15", F: "[a3,e4] ~@5 [g4,c5] ~@7 [a4,d5]@2",
  G: "~@2 [g4,d5] ~ [a4,d5]@5 ~@3 [a4,d5]@3 ~", H: "[c4,g4,c5,f5]@3 ~@3 [c4,g4,c5,f5]@3 ~ [g4,c5,e5] ~ c5@3 ~",
  I: "a#3 ~ a#3 ~ [f4,a#4,d5] ~ a#3 ~ d5 ~ c5 ~ f4 ~ d5 ~", J: "[c4@8 ~@4 a4 ~ g4@11 ~ f4 ~ f4 ~ e4 ~]/2",
  K: "[f4@3 ~ a#4 ~ a4@3 ~ f4 ~ a#4@13 ~@3 e3 ~ g3 ~]/2", L: "[[a3,e4] ~@5 [g4,c5] ~@7 [d4,g4]@11 ~ a3 ~ e3 ~ g3 ~]/2",
  M: "[~@2 [a3,e4] ~@7 [g4,c5] ~@3 [g3,d4,a4,d5]@11 ~ g3 ~ e3 ~ g3 ~]/2", // A5 C5 Gsus2
  N: "[~@2 [a3,e4] ~@3 [g4,c5] ~@7 [d4,g4]@7 ~@5 [d4,g4] ~ e3 ~ g3 ~]/2", // A5 C5 G5
  O: "[[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [g4,c5] ~@3 [g4,c5] ~@3 [d4,a4,d5]@6 [d4,a4,d5]@4 ~@2 [d4,a4,d5]@3 ~ [d4,a4,d5] ~, ~@14 g3 ~@17]/2", // A5 C5 D5
  P: "[~@2 f3 ~ [c4,f4,a4] ~ f3 ~ f3 ~ [c4,f4,g4] ~@3 [f3,c4,f4,g4]@4 [f3,c4,f4,a4] ~ [f3,c4,f4,a4]@4 ~@2 [f3,c4,a#4]@4 ~@2]/2", // F Csus4 Fsus2 F Fsus4
  Q: "[d#4,a#4] ~ d#4 ~ [d#4,g4] ~ d#4 ~ d#4 ~ [d#4,a4]@3 ~ d#4@2", // D#5 D# D#dim
  R: "~@2 [d#4,a#4] ~ [d#4,a#4]@4 ~@2 [d#4,c5]@3 ~ [d#4,a#4] ~", // D#5 Cm D#5
  S: "[f4,a4] ~ [f4,a4] ~ [f4,c5,f5,a5] ~ f4 ~ f4 ~ [f4,c5,f5,g5] ~@5", T: "~@10 [f4,c5,f5,a#5]@3 ~@3",
  U: "~@4 [a#4,d#5,a5,d#6] ~@5 [a#4,d#5,g5,d#6] ~@5", V: "~@10 a3 ~@3 g3 ~",
  W: "[[a3,e4] ~@5 [g4,c5] ~@7 [g3,d4,a4,d5]@11 ~ g3 ~ e3 ~ g3 ~]/2", // A5 C5 Gsus2
  X: "[a3@2 [a3,e4] ~@3 [g4,c5] ~@3 [g4,c5] ~@3 [d4,g4]@7 ~@5 [d4,g4] ~ e3 ~ g3 ~, e4 ~@31]/2", Y: "~@12 d5 ~ c5 ~",
  Z: "[[a3,c5]@4 ~@2 [a3,c5]@4 ~@2 a#3@9 ~@5 g#3@4 ~@2]/2", // Am
  AA: "[[g3,g4,d5]@4 ~@2 [g3,g4]@4 ~@2 g4@12 [g4,c5] ~ c5@4 ~@2, ~@12 c5@9 ~@11]/2", AB: "d5@4 ~@2 d5@3 ~ c5@2 ~@4",
})).s("gm_piano").gain(0.41).pan(0.9)

// bass · electric bass pick
const bass = note(`<
  A B C D E F G D H I J K L I J M@2 B C D E F G D H N@2 O@2 N@2 P@2 B C D E F G D H Q@2 R@2 S@4 A B C D E F G D H
>`.pickRestart({
  A: "~@12 e2 ~ g2 ~", B: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", C: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ e2 ~ g2 ~",
  D: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ g2@2", E: "~@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ e2 ~ g2 ~",
  F: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2@2", G: "~@2 a2 ~ a2 ~ a2 ~ a2 ~ c3 ~ e2 ~ g2 ~",
  H: "~@2 g2 ~ g2 ~ g2 ~ g3 ~ f3 ~ d3 ~ c#3 ~", I: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  J: "c2 ~ c2 ~ c2 ~ c2 ~ a#2 ~ c3 ~ a#2 ~ b1 ~", K: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~",
  L: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ d2 ~ c2 ~ f1 ~ d2 ~", M: "[f2@3 ~ a#2 ~ a2@3 ~ f2 ~ a#2@13 ~@3 e2 ~ g2 ~]/2",
  N: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", O: "d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~",
  P: "[a#1@3 ~ a#1 ~ a#1@3 ~ a#1 ~ d#1@12 ~@4 e2 ~ g2 ~]/2",
  Q: "[c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ a#2@12 ~@4 d3 ~ c3 ~]/2",
  R: "[a2@4 ~@2 a2@4 ~@2 g#2@9 ~@3 d#3 ~ d3 ~ c3 ~ g2 ~]/2",
  S: "[g2@4 ~@2 g2@4 ~@2 f2@9 ~@3 d#3 ~ d3 ~ c3 ~ e2@6 ~@2 e2@4 ~@2 d#2@15 ~@5]/4",
})).s("gm_electric_bass_pick").gain(0.41).pan(0.4)

// bass · electric bass finger
const bass_2 = note(`<
  A B C D E F G D H I J K L I J M@2 B C D E F G D H N@2 O@2 N@2 P@2 B C D E F G D H Q@2 R@2 S@4 A B C D E F G D H
>`.pickRestart({
  A: "~@12 e1 ~ g1 ~", B: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", C: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ e1 ~ g1 ~",
  D: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ g1@2", E: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ e1 ~ g1 ~",
  F: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2", G: "~@2 a1 ~ a1 ~ a1 ~ a1 ~ c2 ~ e1 ~ g1 ~",
  H: "~@2 g1 ~ g1 ~ g1 ~ g2 ~ f2 ~ d2 ~ c#2 ~", I: "c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~ c1 ~",
  J: "c1 ~ c1 ~ c1 ~ c1 ~ a#1 ~ c2 ~ a#1 ~ b0 ~", K: "a#0 ~ a#0 ~ a#0 ~ a#0 ~ a#0 ~ a#0 ~ a#0 ~ a#0 ~",
  L: "a#0 ~ a#0 ~ a#0 ~ a#0 ~ d1 ~ c1 ~ f0 ~ d1 ~", M: "[f1@3 ~ a#1 ~ a1@3 ~ f1 ~ a#1@13 ~@3 e1 ~ g1 ~]/2",
  N: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", O: "d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~",
  P: "[a#1@3 ~ a#1 ~ a#1@3 ~ a#1 ~ d#1@12 ~@4 e1 ~ g1 ~]/2",
  Q: "[c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ a#1@12 ~@4 d2 ~ c2 ~]/2",
  R: "[a1@4 ~@2 a1@4 ~@2 g#1@9 ~@3 d#2 ~ d2 ~ c2 ~ g1 ~]/2",
  S: "[g1@4 ~@2 g1@4 ~@2 f1@9 ~@3 d#2 ~ d2 ~ c2 ~ e1@6 ~@2 e1@4 ~@2 d#1@15 ~@5]/4",
})).s("gm_electric_bass_finger").gain(0.41).pan(0.6)

// chords · piano
const piano_3 = note("<~@9 A B C D E ~@6 F@2 G@2 ~@12 F@2 G@2 ~@18>".pickRestart({
  A: "c4 ~ c4 ~ [g4,c5,f5] ~ c4 ~ c4 ~ [g4,c5,e5] ~ c4 ~ c4 ~", // Csus4 C
  B: "[c4,g4,c5,f5]@3 ~@3 [c4,g4,c5,f5]@3 ~ [g4,c5,e5] ~ c5@3 ~", // Csus4 C
  C: "a#3 ~ a#3 ~ [f4,a#4,c5,f5] ~ [f4,a#4,c5,f5] ~ a#3 ~ a#3 ~ [f4,a#4,d5] ~ [f4,a#4,d5] ~", // Fsus4 A#
  D: "a#3 ~ a#3 ~ [f4,a#4,d5] ~ a#3 ~ d5 ~ c5 ~ f4 ~ d5 ~", // A#
  E: "c4 ~ [g4,c5,f5] ~ [g4,c5,f5] ~ c4 ~ c4 ~ [g4,c5,e5] ~ c4 ~ c4 ~", // Csus4 C
  F: "[a5@5 ~@3 [g4,c5] ~@3 [a4,d5] ~ [g4,c5]@13 ~@5]/2", // C5 D5 C5
  G: "[~@8 [g4,c5] ~@3 [a4,d5] ~ g4@10 [g4,c5]@3 ~@5, ~@14 c5@7 ~@11]/2", // C5 D5 C5
})).s("gm_piano").gain(0.41).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A@2 B A@2 C A B A@2 B A D ~ A B A@2 B A@2 C A B A@2 B A D ~ A B A@2 B A@2 C ~@9 A B A@2 B A@2 C
>`.pickRestart({
  A: "x ~ x ~@3 x ~@3 x ~@2 x!2 ~", B: "x ~ x ~@2 x!2 ~ x ~ x ~@2 x!2 ~", C: "x!2 ~ x!2 ~@3", D: "x!2 ~ x ~ x ~@2",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<~ A@7 B A@6 C ~ A@4 D A@2 B A@4 D A C E A@4 D A@2 B ~@9 A@7 B>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x ~ x ~ x!2", C: "~ x ~@2", D: "x!2 ~ x", E: "~@12 x ~ x!2",
})).gain(0.41)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ A B@7 A B@5 C ~ A B@3 D B D B A B@3 E B ~@2 A B@3 D B D B ~@9 A B@7>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!6 ~@2", D: "~@6 x!2", E: "~@2 x!6",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct("<~ A ~@7 A ~@5 B ~ A ~@3 C ~ C ~ A ~@3 A ~ B ~ A ~@3 C ~ C ~@10 A ~@7>".pickRestart({
  A: "x", B: "~@3 x", C: "x!2 ~@2",
})).gain(0.41)

stack(piano, harpsichord, piano_2, bass, bass_2, piano_3, kick, snare, pedal_hat, crash)

More by Van Halen