Strudelify

I'll Wait

Van Halen

KeyD minorTempo114 bpm
0:00/0:00
// I'll Wait — Van Halen
// 114 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 1 "Keyboard" synth brass 1 (copy of ch 7 "Keyboard" synth brass 2)
// note: Full arrangement: all 136 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 · synth brass 2 · "Keyboard"
const synth_brass_2 = note(`<
  A B@2 C@2 B@2 C@2 B@2 D@2 E@4 F@4 G@2 H@2 G@2 I ~ J K L@2 J K M@2 J K M@2 J K N@2 G@2 H@2 G@2 I ~ J K L@2 J K M@2 J K
  M@2 G@2 H@2 G@2 O@2 P Q R S P Q R T@2 ~@20 J K L@2 J K M@2 J K M@2 J K N@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 G@2
>`.pickRestart({
  A: "~@13 d4 f4 a4", B: "[[d5,f5,a5]@3 ~ [d5,f5,a5]@2 [d5,e5,g5]@7 ~ [d5,e5,g5]@4 a5@2 [bb4,d5,f5]@6 a4 g4 f4@3 ~]/2",
  C: "[[bb4,d5,f5]@5 ~ [g4,c5,e5]@3 ~ a4@3 ~ [g4,c5,e5]@4 a4@2 [f4,bb4,d5]@9 d4 f4 a4]/2", // Bb C Bb
  D: "[[bb4,d5,f5]@5 ~ [g4,c5,e5]@3 ~ a4@3 ~ [g4,c5,e5]@4 a4@2 [f4,bb4,d5]@10 ~@2]/2", // Bb C Bb
  E: "[[f4,bb4,d5]@10 ~@4 [a4,c5,e5]@12 ~@4 [a4,d5,f5]@8 ~@4 [d5,g5,a5]@2 ~@2 [d5,g5,a5]@4 f5@2 e5@2 [c5,e5,g5]@7 ~@3]/4", // Bb Am Dm Dsus4 C
  F: "[[f4,bb4,d5]@10 ~@4 [a4,c5,e5]@12 ~@4 [a4,d5,f5]@8 ~@4 [d5,g5,a5]@2 ~@2 [d5,g5,a5]@4 f5@2 e5@2 [c5,e5,g5]@6 ~ a4 d5 f5]/4", // Bb Am Dm Dsus4 C
  G: "[[d5,g5,a5]@5 ~ [d5,gb5,a5]@2 ~@6 [c5,f5,g5]@7 ~ [c5,e5,g5]@2 ~@5 a4 d5 f5]/2", // Dsus4 D Csus4 C
  H: "[[d5,g5,a5]@5 ~ [d5,gb5,a5]@2 ~@2 [f5,a5,c6]@2 ~@2 [f5,a5,c6]@4 [c5,f5,a5]@2 ~@2 [d5,g5,b5]@5 ~@2 a4 d5 f5]/2", // Dsus4 D F G
  I: "[d5,g5,a5]@5 ~ [d5,gb5,a5]@2 ~@2 [f5,a5,c6]@3 ~ [g5,b5,d6]@2", J: "[d5,f5,a5] ~@2 [c5,e5,g5]@4 ~",
  K: "[c5,e5,g5] ~@2 [a4,d5,f5]@4 ~", L: "[[a4,d5,f5]@2 ~@4 [a4,c5,e5]@2 ~@2 [f4,a4,c5]@2 [g4,b4,d5]@9 ~@11]/2",
  M: "[[a4,d5,f5] ~@2 [a4,c5,e5] ~ [f4,a4,c5] [g4,b4,d5]@5 ~@5]/2", // Dm Am F G
  N: "[[a4,d5,f5]@2 ~@4 [a4,c5,e5]@2 ~@2 [f4,a4,c5]@2 [g4,b4,d5]@10 ~@7 a4 d5 f5]/2", // Dm Am F G
  O: "[[d5,g5,a5]@5 ~ [d5,gb5,a5]@2 ~@2 [f5,a5,c6]@2 ~@2 [f5,a5,c6]@4 [g5,b5,d6]@2 ~@2 [g5,b5,d6]@8 ~@2]/2", // Dsus4 D F G
  P: "~@10 [a4,d5,f5]@3 ~ [g4,c5,e5]@2", Q: "~@10 [c5,e5,g5]@3 ~ [bb4,d5,f5]@2", R: "~@10 [d5,f5,a5]@3 [c5,e5,g5] ~@2",
  S: "[c5,e5,g5]@2 ~ a5 ~@2 [bb4,d5,f5]@8 ~@2", T: "[[c5,e5,g5]@2 ~ a5 ~@2 [bb4,d5,f5]@23 ~@3]/2",
})).s("gm_synth_brass_2").gain(0.3)

// other · distortion guitar · "Guitar"
const distortion_guitar = note("<~@82 A B C D E F@2 G@2 H I J K L M N@3 O ~@35>".pickRestart({
  A: "~@4 d5@3 ~ d5@2 c5@2 d5@2 c5@2", B: "d5 ~ d5 ~ d5 c5 d5 c5", C: "d5@2 ~@2 d5@2 ~@2 d5@2 c5@2 d5@3 ~",
  D: "e5@11 ~ c4@2 a3@2", E: "c4 d4!2 ~ d4 ~ f4 ~",
  F: "[g4@2 ~@2 d4@2 ~@2 g3@2 ~@2 f3@7 ~ a3@2 g3@2 e4@2 d4@2 b4@2 a4@2]/2",
  G: "[a5@6 ~@2 d5@2 f5@2 f5@6 e5@2 d5@2 e5@2 a4@2 d5@5 ~]/2", H: "d5 ~ e5@3 c5 ~ a4 f4@5 ~@3",
  I: "~@2 e5@2 d5@2 f5@2 ~ f5 ~ e5 ~ f5 e5 f5", J: "e5 c5 d5 c5 d5 [a4,c5] g4 c5@8 ~", K: "~ a5@2 g5 a5 c6 a5 ~",
  L: "~ a5@2 g5 a5 c6 d5 ~", M: "f3@2 a3 g3 c4 [a3,c4] d4 [f4,g4] g4 [a4,bb4] c5 f5@4 ~, ~@11 d5 ~@4",
  N: "[f3 d3 f3 d3 ~ f3 d3@2 g3@2 f3@2 d3@2 ~ e5@3 d5@2 a4@10 d5@4 c5@2 g4@6 ~@6]/3", O: "bb3@13 ~@3",
})).s("gm_distortion_guitar").gain(0.32)

// bass · synth bass 1 · "Bass"
const bass = note(`<
  ~@13 A@2 B@12 C ~ B@3 D B@2 E F B@3 D B@2 E G B@6 C H B@3 D B@2 E F B@2 E I B@3 J B@4 ~@8 K L M N O B E P Q B E P R B
  E P R B S T U B@3 D B@2 E F B@3 D B@2 E G B@18
>`.pickRestart({
  A: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", B: "d2!8", C: "d2!7 d3", D: "d2 f2!2 g2!2 a2 c3!2", E: "a2!8",
  F: "a2 f2!2 g2!2 a2 c3!2", G: "a2 g2 f2 e2!2 f2 e2 d2", H: "~@5 c2!2 d2", I: "a2 f2!2 e2!2 f2 e2 d2",
  J: "d2 f2!2 g2!2 a2 c3 a2", K: "d3@2 ~ c3@2 g2@2 ~ a2@2 ~ bb2@2 c2@2 ~", L: "d3!6 c3!2", M: "c3!2 bb2!4 a2!2",
  N: "a2!2 g2!3 a2!3", O: "bb2!4 c3!4", P: "f2!8", Q: "g2!3 a2 bb2!4", R: "g2!8", S: "c3!8", T: "bb2!8",
  U: "a2!5 g2 f2 e2",
})).s("gm_synth_bass_1").gain(0.06)

// drums · snare
const snare = s("sd").struct(`<
  ~@21 A@7 ~ A@15 ~ A@3 ~ A@3 ~ A@11 ~ A@7 B C@3 ~ C D ~@3 A@3 E A@15 ~ A@34
>`.pickRestart({
  A: "~ x ~ x", B: "~@12 x!4", C: "x!16", D: "~@8 x!5 ~@3", E: "~ x ~@2",
})).gain(0.27)

// drums · low tom
const low_tom = s("lt").struct("<~@21 A@7 B A@15 ~ A@3 ~ A@3 B A@11 B A@7 C ~@9 D@4 A@15 ~ A@34>".pickRestart({
  A: "x", B: "~@4 x!2 ~ x ~ x ~@6", C: "x!2 ~ x ~ x ~@2", D: "x!2 ~@6",
})).gain(0.27)

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

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@13 A@7 B C@7 D C@15 B C@3 B C@3 D C@11 D C@7 E ~@3 F ~ G H I J C@3 K C@15 B C@34
>`.pickRestart({
  A: "x!4", B: "x!2 ~ x!2 ~@2 x!4 ~ x!3 ~", C: "~ x ~ x", D: "~@4 x!2 ~ x ~ x!2 ~ x!3 ~", E: "~@4 x ~@3 x ~@3 x!4",
  F: "~ x!15", G: "x!13 ~@3", H: "~@4 x!2 ~ x!3 ~ x!3 ~@2", I: "~@3 x!4 ~ x!3 ~ x!4",
  J: "x ~@2 x ~ x ~@2 x!3 ~ x ~ x!2", K: "~@4 x ~@7 x!4",
})).gain(0.27)

// drums · china
const china = s("cr").struct(`<
  ~@21 A@7 ~ A@15 ~ A@3 ~ A@3 ~ A@11 ~ A@7 B C@3 ~ C ~@3 D E@3 B A@15 ~ A@34
>`.pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "x!4", D: "x ~@2 x ~ x ~@10", E: "x!3 ~ x!3 ~",
})).gain(0.27)

// drums · congas
const congas = s("conga:33").struct("<~@20 A ~@23 A ~@3 A ~@52 A ~@34>".pickRestart({
  A: "~@5 x ~ x",
})).gain(0.86)

stack(synth_brass_2, distortion_guitar, bass, snare, low_tom, mid_tom, high_tom, china, congas)

More by Van Halen