Strudelify

Love Walks In

Van Halen

KeyF majorTempo88 bpm
0:00/0:00
// Love Walks In — Van Halen
// 88 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 37 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/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 · reed organ · "Synth"
const reed_organ = note("<A@8 B C B D C@3 E F G F H F G F I J K L M N@8 O>".pickRestart({
  A: "[~@2 g4@2 c5@2 d5@2 e5@3 f5@3 e5@4 g4@2 c5@2 d5@2 g5@3 f5@3 e5@4 g4@2 c5@2 d5@2 e5@3 f5@3 e5@4 c5@3 a4@3 c5@3 b4@3 c5@4 g4@2 c5@2 d5@2 e5@3 f5@3 g5@4 g4@2 c5@2 d5@2 g5@3 f5@3 e5@4 g4@2 c5@2 d5@2 e5@3 f5@3 e5@4 c5@3 a4@3 c5@3 b4@3 g4@2, ~@4 [g4,c5]@5 ~@3 [g4,c5]@5 ~@3 [g4,c5]@5 ~@3 g4@5 ~@3 [g4,c5]@5 ~@3 [g4,c5]@5 ~@3 [g4,c5]@5 ~@3 g4@3 ~]/8", // C5
  B: "[c5,f5,g5]@3 [c5,f5,a5]@3 [c5,f5,bb5]@3 ~ [c5,f5,a5]@6", // Csus4 F Fsus4 F
  C: "[c5,f5,g5]@3 [c5,f5,a5]@3 [c5,f5,bb5]@4 [c5,f5,a5]@6", D: "[c5,f5,a5]@3 f5@3 d5@2 [c5,f5]@3 e5@3 c5@2",
  E: "[a4,d5,f5]!2 ~ [g4,c5,e5]!2 ~@3", F: "[d4,a4,d5,f5]@2 ~ [bb3,f4,bb4,d5]@5",
  G: "[c4,e4,g4,c5,e5]@2 ~ [d4,a4,d5,f5]@5", H: "[c4,e4,g4,c5,e5]@3 [bb3,f4,bb4,d5]@3 [a3,c4,e4,a4,c5]@10",
  I: "[c4,e4,g4,c5,e5]@3 [bb3,f4,bb4,d5]@3 [a3,c4,e4,a4,c5]@6 [c4,f4,a4,c5,f5] [c4,f4,a4,c5,f5]@3", // C Bb Am F
  J: "[c4,f4,a4,c5,f5]@2 [b3,g4,b4,d5,g5]@2 [b3,g4,b4,d5,g5]@2 [c4,e4,a4,c5]@2 [c4,e4,a4,c5]@3 [c4,e4,a4,c5]@2 [b3,e4,g4,b4,e5]@3", // F G Am Em
  K: "[b3,e4,g4,b4,e5]@2 [c4,f4,a4,c5,f5] ~ [c4,f4,a4,c5,f5]@2 [c4,e4,a4,c5]@3 [b3,g4,b4,d5,g5]@3 [b3,g4,b4,d5,g5] [c4,f4,a4,c5,f5]@3", // Em F Am G F
  L: "[c4,f4,a4,c5,f5]@2 [b3,g4,b4,d5,g5]@2 [b3,g4,b4,d5,g5]@2 [c4,e4,a4,c5]@2 [c4,e4,a4,c5]@3 [c4,e4,a4,c5]@2 [c4,f4,a4,c5,f5]@3", // F G Am F
  M: "[c4,f4,a4,c5,f5]@3 [c4,e4,a4,c5]@3 [b3,g4,b4,d5,g5]@6 c6@2 b5 c6", // F Am G
  N: "[~@2 g4@2 c5@2 d5@2 e5@3 f5@3 e5@4 g4@2 c5@2 d5@2 g5@3 f5@3 e5@4 g4@2 c5@2 d5@2 e5@3 f5@3 e5@4 c5@3 a4@3 c5@3 b4@3 c5@4 g4@2 c5@2 d5@2 e5@3 f5@3 g5@4 g4@2 c5@2 d5@2 g5@3 f5@3 e5@4 g4@2 c5@2 d5@2 e5@3 f5@3 e5@4 c5@2 a5@2 f5@2 [a5,c6]@2 [g5,b5]@2 [e5,a5]@2 [d5,g5]@2, ~@4 [g4,c5]@5 ~@3 [g4,c5]@5 ~@3 [g4,c5]@5 ~@3 g4@5 ~@3 [g4,c5]@5 ~@3 [g4,c5]@5 ~@3 [g4,c5]@5 ~@7]/8", // Am G A5 G5 C5
  O: "[c5,e5,g5]", // C
})).s("gm_reed_organ").gain(0.32).pan(0.4)

// bass · acoustic bass · "Bass"
const bass = note("<A B C D A B C D E F G H E F G I J K L M J K L N O P Q R A B C D A B C D A>".pickRestart({
  A: "c2", B: "e2", C: "a1", D: "f2 g2", E: "f2!8", F: "a1!8", G: "d2!8", H: "f2 e2", I: "f2!2 ~ e2!2 ~@3",
  J: "d2 ~ a2 c3 d3@2 ~@2 f2 ~ a2 c3 d3@2 c3@2", K: "d2 ~ a2 c3 d3@2 d2@2 ~@2 a2 c3 d3@2 f3@2",
  L: "d2 ~ a2 c3 d3@2 ~@2 d2 ~ a2 c3 d3@2 c3@2", M: "c3@3 bb2@2 bb2 a2@4 g2 a2 f2@2 d2@2",
  N: "c3@3 bb2@2 bb2 a2@4 a2@2 a2@2 d3 c3", O: "f2@3 d2 g2@3 e2 a2@6 bb2 b2", P: "e2@3 c2 f2@6 g2 d2 g2@3 c2",
  Q: "f2@3 d2 g2@3 e2 a2@6 c3@2", R: "f2@6 g2@2 d2 g2@7",
})).s("gm_acoustic_bass").gain(0.32)

// chords · piano · "Doubling Piano"
const piano = note("<A@8 B C B D C@3 E F G F H F G F I J K L M N@8 O>".pickRestart({
  A: "[~@2 g3@2 c4@2 d4@2 e4@3 f4@3 e4@4 g3@2 c4@2 d4@2 g4@3 f4@3 e4@4 g3@2 c4@2 d4@2 e4@3 f4@3 e4@4 c4@3 a3@3 c4@3 b3@3 c4@4 g3@2 c4@2 d4@2 e4@3 f4@3 g4@4 g3@2 c4@2 d4@2 g4@3 f4@3 e4@4 g3@2 c4@2 d4@2 e4@3 f4@3 e4@4 c4@3 a3@3 c4@3 b3@3 g3@2, ~@4 [g3,c4]@5 ~@3 [g3,c4]@5 ~@3 [g3,c4]@5 ~@3 g3@5 ~@3 [g3,c4]@5 ~@3 [g3,c4]@5 ~@3 [g3,c4]@5 ~@3 g3@3 ~]/8", // C5
  B: "[c4,f4,g4]@3 [c4,f4,a4]@3 [c4,f4,bb4]@3 ~ [c4,f4,a4]@6", // Csus4 F Fsus4 F
  C: "[c4,f4,g4]@3 [c4,f4,a4]@3 [c4,f4,bb4]@4 [c4,f4,a4]@6", D: "[c4,f4,a4]@3 f4@3 d4@2 [c4,f4]@3 e4@3 c4@2",
  E: "[a3,d4,f4]!2 ~ [g3,c4,e4]!2 ~@3", F: "[d3,a3,d4,f4]@2 ~ [bb2,f3,bb3,d4]@5",
  G: "[c3,e3,g3,c4,e4]@2 ~ [d3,a3,d4,f4]@5", H: "[c3,e3,g3,c4,e4]@3 [bb2,f3,bb3,d4]@3 [a2,c3,e3,a3,c4]@10",
  I: "[c3,e3,g3,c4,e4]@3 [bb2,f3,bb3,d4]@3 [a2,c3,e3,a3,c4]@6 [c3,f3,a3,c4,f4] [c3,f3,a3,c4,f4]@3", // C Bb Am F
  J: "[c3,f3,a3,c4,f4]@2 [b2,g3,b3,d4,g4]@2 [b2,g3,b3,d4,g4]@2 [d3,e3,a3,c4,e4]@2 [d3,e3,a3,c4,e4]@3 [d3,e3,a3,c4,e4,a4]@2 [b2,e3,g3,b3,e4]@3", // F G Am Em
  K: "[b2,e3,g3,b3,e4]@2 [c3,f3,a3,c4,f4] ~ [c3,f3,a3,c4,f4]@2 [c3,e3,a3,c4]@3 [b2,g3,b3,d4,g4]@3 [b2,g3,b3,d4,g4] [c3,f3,a3,c4,f4]@3", // Em F Am G F
  L: "[c3,f3,a3,c4,f4]@2 [b2,g3,b3,d4,g4]@2 [b2,g3,b3,d4,g4]@2 [c3,e3,a3,c4]@2 [c3,e3,a3,c4]@3 [c3,e3,a3,c4]@2 [c3,f3,a3,c4,f4]@3", // F G Am F
  M: "[c3,f3,a3,c4,f4]@3 [c3,e3,a3,c4]@3 [b2,g3,b3,d4,g4]@6 c5@2 b4 c5", // F Am G
  N: "[~@2 g3@2 c4@2 d4@2 e4@3 f4@3 e4@4 g3@2 c4@2 d4@2 g4@3 f4@3 e4@4 g3@2 c4@2 d4@2 e4@3 f4@3 e4@4 c4@3 a3@3 c4@3 b3@3 c4@4 g3@2 c4@2 d4@2 e4@3 f4@3 g4@4 g3@2 c4@2 d4@2 g4@3 f4@3 e4@4 g3@2 c4@2 d4@2 e4@3 f4@3 e4@4 c4@2 a4@2 f4@2 [a4,c5]@2 [g4,b4]@2 [e4,a4]@2 [d4,g4]@2, ~@4 [g3,c4]@5 ~@3 [g3,c4]@5 ~@3 [g3,c4]@5 ~@3 g3@5 ~@3 [g3,c4]@5 ~@3 [g3,c4]@5 ~@3 [g3,c4]@5 ~@7]/8", // Am G A5 G5 C5
  O: "[c4,e4,g4]", // C
})).s("gm_piano").gain(0.24).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@11 [x!2] ~@3 [x!2 ~ x!2 ~@3] ~@10 [~ x] ~@10>").gain(0.32)

// drums · rim
const rim = s("rim").struct("<~@16 [~ x ~@2]!8 ~ [~ x ~@2] ~ [~ x ~@2]!8 ~@2>").gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@8 A@3 ~ A@3 B C@8 D C E C@8 ~@2>".pickRestart({
  A: "x!2", B: "~@13 x ~@2", C: "~@3 x", D: "~@4 x ~@3 x!2 ~@4 x ~", E: "~@2 x ~@4 x",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@15 A B@8 C B D B@8 E F>".pickRestart({
  A: "~@3 x", B: "x!2 ~@3 x ~@2", C: "x ~ x ~@9 x!2 ~@2", D: "x ~ x ~@6 x ~@3 x!2 ~", E: "x!2", F: "x",
})).gain(0.32)

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

// drums · open hat
const open_hat = s("oh").struct("<~@24 [x!4 ~@4] ~ [x!4 ~@4] ~@10>").gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@19 [~@3 x] ~@6 [~@7 x] ~@8 [x!2] x>").gain(0.32)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@26 [~@7 x] ~@8 [x!2] x>").gain(0.32)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 [x!8]!8 ~ [x!8] ~ [x!8]!8 ~@2>").gain(0.32)

stack(reed_organ, bass, piano, kick, rim, snare, low_tom, mid_tom, open_hat, high_tom, crash, ride_bell, tambourine)

More by Van Halen