Strudelify

(Oh) Pretty Woman

Van Halen

KeyE majorTempo127 bpm
0:00/0:00
// (Oh) Pretty Woman — Van Halen
// 127 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(127/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 · distortion guitar
const distortion_guitar = note(`<
  ~@2 A@2 B C@3 D E F G H I J K@3 L M@2 N O P Q R S T U V@2 W X Y X Z ~@15 AA AB@6 X@3 AC G F G H I AD AE AF@2 AG AF AH
  AI AJ AK AH AL ~ AM B AN@2 AO AP AQ AO AQ AO@3 AR
>`.pickRestart({
  A: "[[e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2 [d2,d3]@16 [e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2]/2", B: "[d2,d3]",
  C: "[e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2 [d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3] ~", // E G# B D F# E D
  D: "[e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2 [d2,d3]@2 [f#2,f#3]@2 [e2,e3]@3 ~", // E G# B D F# E
  E: "[a2,c#3]@5 ~ [a2,c#3] ~ [a2,c#3] ~ [a2,c#3]!2 [a2,c#3]@3 ~, e2 ~@15", // A
  F: "[f#2,a2]@5 ~ [f#2,a2] ~ [f#2,a2] ~ [f#2,a2]!2 [f#2,a2]@3 ~", // F#m
  G: "[a2,c#3]@5 ~ [a2,c#3] ~ [a2,c#3] ~ [a2,c#3]!2 [a2,c#3]@3 ~", // A
  H: "[f#2,a2]@5 ~ [f#2,a2] ~ [f#2,a2] ~ [f#2,a2]!2 [f#2,a2]@2 ~@2", // F#m
  I: "[a2,d3]@5 ~ [a2,d3] ~ [a2,d3] ~ [a2,d3]!2 [a2,d3]@3 ~", J: "[a2,d3]@5 ~ [a2,d3] ~ [b2,e3]@5 ~ [b2,e3]@2",
  K: "~@2 [b2,e3] ~@3 [b2,e3] ~ [b2,e3]@5 ~ [b2,e3]@2", // E5
  L: "~@2 [b2,e3] ~@3 [b2,e3]@2 [e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2", // E5 E G# B
  M: "[d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3]@2 [e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2", // D F# E D E G# B
  N: "[d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3]@2 [e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [a1,b1,b2]@2", // D F# E D E G# Asus2
  O: "[d2,d3]@2 [f#2,f#3]@2 [e2,e3]@3 ~ [a2,c#3]@4 ~@2 [a2,c#3] ~", // D F# E A
  P: "[a2,c#3] ~ [a2,c#3]!2 [a2,c#3]@3 ~ [f#2,a2]@5 ~ [f#2,a2] ~", // A F#m
  Q: "[f#2,a2] ~ [f#2,a2]!2 [f#2,a2]@2 ~@2 [a2,c#3]@5 ~ [a2,c#3] ~", // F#m A
  R: "[a2,c#3] ~ [a2,c#3]!2 [a2,c#3]@2 ~@2 [f#2,a2]@5 ~ [f#2,a2] ~", // A F#m
  S: "[f#2,a2] ~ [f#2,a2]!2 [f#2,a2]@2 ~@2 [a2,d3]@5 ~ [a2,d3] ~", // F#m D5
  T: "[a2,d3] ~ [a2,d3]!2 [a2,d3]@3 ~ [a2,d3]@5 ~ [a2,d3] ~", U: "[b2,e3]@5 ~ [b2,e3]@3 ~ [b2,e3] ~@3 [b2,e3] ~",
  V: "[b2,e3]@5 ~ [b2,e3]@3 ~ [b2,e3] ~@3 [b2,e3]!2", W: "[b2,e3]@5 ~ [b2,e3]@3 ~ [b2,e3] ~@3 [b2,e3]@2",
  X: "[e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2 [d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3]@2", // E G# B D F# E D
  Y: "[e1,e2,f2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2 [d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3]@2", // Fmaj7 E G# B D F# E D
  Z: "[e1,e2] ~ e1@3 ~@11, ~@2 e2 ~@13", AA: "~@15 [a2,c#3]",
  AB: "[[a2,c#3,f#3]@5 ~ [a2,c#3,f#3] ~ [a2,c#3,f#3]@3 ~ [a2,c#3,f#3]@2 ~@2 f3@5 ~ [a2,d3,f3] ~ [a2,d3,f3]@3 ~ [a2,d3,f3]@2 ~@2 [b2,e3]@6 [g#2,b2,e3] ~ [g#2,b2,e3]@3 ~ [g#2,b2,e3]@2 ~@2 [c#3,e3]@5 ~ [a2,c#3,e3] ~ [a2,c#3,e3]@3 ~ [a2,c#3,e3]@2 ~@2 [c#3,f#3]@6 [a2,c#3,f#3] ~ [a2,c#3,f#3]@3 ~ [a2,c#3,f#3]@2 ~@2 [d3,f3]@6 [a2,d3,f3] ~ [a2,d3,f3]@3 ~ [a2,d3,f3]@3 ~, ~@15 [a2,d3]@6 ~@10 g#2@6 ~@10 a2@6 ~@10 a2@6 ~@10 a2@6 ~@11, ~@32 [c3,d#3] ~@63]/6", // F#m Dm E5 E C#m A F#5 F#m …
  AC: "[e1,e2] ~ [e1,f1,e2]@2 [g#1,g#2]@2 [a1,b1,b2]@2 [d2,d3]@2 [f#2,f#3]@2 [e2,e3]@3 ~", // E Fmaj7 G# Asus2 D F# E
  AD: "[a2,d3]@5 ~ [a2,d3] ~ [b2,e3]@3 [g#2,b2,e3]!2 ~ [g#2,b2,e3] ~, ~@7 g#2@3 ~@6", // D5 E5 E
  AE: "[g#2,b2,e3]@2 ~ [g#2,b2,e3] [g#2,b2,e3]@3 ~ [b2,e3]@3 [g#2,b2,e3]!2 ~ [g#2,b2,e3] ~, ~@7 g#2@3 ~@6", // E E5 E
  AF: "[g#2,b2,e3]@3 [g#2,b2,e3] [g#2,b2,e3]@2 ~@2 [b2,e3]@3 [g#2,b2,e3]!2 ~ [g#2,b2,e3] ~, ~@7 g#2@3 ~@6", // E E5 E
  AG: "[g#2,b2,e3]@3 [g#2,b2,e3] [g#2,b2,e3]@2 ~@2 [b2,e3]@3 [g#2,b2,e3]!2 ~ [g#2,b2,e3] ~, a#2 ~@6 g#2@3 ~@6", // E E5 E
  AH: "[g#2,b2,e3]@2 ~ [g#2,b2,e3] [g#2,b2,e3]@2 ~@2 [b2,e3]@3 [g#2,b2,e3]!2 ~ [g#2,b2,e3] ~, ~@7 g#2@3 ~@6", // E E5 E
  AI: "[g#2,b2,e3]@3 [g#2,b2,e3] [g#2,b2,e3]@3 ~ [g#2,b2,e3]@3 [g#2,b2,e3]!2 ~ [g#2,b2,e3] ~", // E
  AJ: "[g#2,b2,e3]@2 ~ [g#2,b2,e3] [g#2,b2,e3]@2 ~@2 e3@3 [g#2,b2,e3]!2 ~ [g#2,b2,e3] ~, ~@7 [g#2,b2]@3 ~@6", // E G#m
  AK: "[g#2,b2,e3]@2 ~ [g#2,b2,e3] [g#2,b2,e3]@3 ~ [g#2,b2,e3]@3 [g#2,b2,e3]!2 ~ [g#2,b2,e3] ~", // E
  AL: "[g#2,b2,e3]@2 ~ [g#2,b2,e3] [g#2,b2,e3]@3 ~ [g#2,b2,e3] ~@7", // E
  AM: "~@8 [e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2", // E G# B
  AN: "[[e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2 [d2,d3]@16 [e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [a1,b1,b2]@2]/2", // E G# B D E G# Asus2
  AO: "[d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3] ~ [e1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2", // D F# E D E G# B
  AP: "[d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3] ~ [e1,f1,e2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2", // D F# E D Fmaj7 E G# B
  AQ: "[d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3] ~ [e1,e2,f2] ~ [e1,e2]@2 [g#1,g#2]@2 [b1,b2]@2", // D F# E D Fmaj7 E G# B
  AR: "[d2,d3]@2 [f#2,f#3]@2 [e2,e3]@2 [d2,d3]@2 [a1,a2] ~ [a1,a2]@2 ~@4", // D F# E D A
})).s("gm_distortion_guitar").gain(0.46)

// bass · electric bass pick
const bass = note(`<
  ~@5 A@3 B C D E F G H I J@2 K L M@2 N O P Q R S T U T@2 A@3 V W X Y Z AA AB AC AD W X Y Z AE AB Y E AF AG AH AI AF AJ
  A@4 C D E F G AK J@3 AL@2 AM J AL J@2 AN ~@4 AO L@8 AP
>`.pickRestart({
  A: "e2 ~ e2@2 g#2@2 b2@2 d3 ~ f#3 ~ e3 ~ d3 ~", B: "e2 ~ e2@2 g#2@2 b2@2 d3 ~ f#3 ~ e3@3 ~",
  C: "a2@5 ~ a2 ~ c#3@4 e3@4", D: "f#3@5 ~ f#3 ~ c#3@2 ~ c#3 f#3 ~ c#3 ~", E: "a2@5 ~ a2 ~ c#3@3 ~ e3 ~ f3 ~",
  F: "f#3@5 ~ f#3@2 c#3@2 ~ c#3 f#3 ~ e3 ~", G: "d3@5 ~ d3@2 a2@5 ~ a2@2", H: "d3@5 ~ d3@2 e3@5 ~ e3@2",
  I: "b2@3 ~ b2@3 ~ e3@5 ~ e3 ~", J: "b2@3 ~ b2@3 ~ e3@5 ~ e3@2", K: "b2@3 ~ b2@3 ~ e2 ~ e2@2 g#2@2 b2@2",
  L: "d3 ~ f#3 ~ e3 ~ d3 ~ e2 ~ e2@2 g#2@2 b2@2", M: "d3 ~ f#3 ~ e3 ~ d3 ~ [e2,f2] ~ e2@2 g#2@2 b2@2",
  N: "d3 ~ f#3 ~ e3 ~ c#3 ~ a2@4 ~@2 a2 ~", O: "c#3@4 e3@4 f#3@5 ~ f#3 ~", P: "c#3@2 ~ c#3 f#3 ~ c#3 ~ a2@5 ~ a2 ~",
  Q: "c#3@3 ~ e3 ~ f3 ~ f#3@5 ~ f#3@2", R: "c#3@2 ~ c#3 f#3 ~ e3 ~ d3@5 ~ d3@2", S: "a2@5 ~ a2@2 d3@5 ~ d3@2",
  T: "e3@5 ~ e3@2 b2@3 ~ b2@3 ~", U: "e3@5 ~ e3 ~ b2@3 ~ b2@3 ~", V: "e2 ~ e2 ~ e2@3 ~ e2@3 ~ e2@2 ~@2",
  W: "d3@5 ~ e3 ~ f3@4 a3@3 ~", X: "g3@6 f3 ~ e3@4 d3@3 ~", Y: "c3@5 ~ c3 ~ e3@4 c3 ~ b2 ~",
  Z: "a2@5 ~ b2 ~ c3@3 ~ e3@4", AA: "d3@6 e3 ~ f3@4 a3@4", AB: "g3@6 f3 ~ e3@4 d3@4",
  AC: "c3@3 ~ c3 ~ e3@3 ~ e3@2 g3@3 ~", AD: "c3@3 ~ c3 ~ e3@2 ~@2 e3 ~ e3@2 d#3@2", AE: "d3@6 e3 ~ f3@3 ~ a3@4",
  AF: "f#3@5 ~ f#3 ~ c#3@3 ~ f#3 ~ e3 ~", AG: "d3@5 ~ d3@2 f3@3 ~ f3@4", AH: "e3@6 d3 ~ c#3@3 ~ b2@4",
  AI: "a2@5 ~ a2 ~ c#3@4 e3 ~ f3 ~", AJ: "d3@5 ~ d3 ~ d3@3 ~ f3@3 ~", AK: "d3@5 ~ d3@2 e3@4 ~@2 e3@2",
  AL: "b2@3 ~ b2@3 ~ e3@4 ~@2 e3@2", AM: "b2@2 ~@2 b2@3 ~ e3@4 ~@2 e3@2", AN: "b2@3 ~ b2@3 ~ e3@2 ~@6",
  AO: "~@8 e2 ~ e2@2 g#2@2 b2@2", AP: "d3 ~ f#3 ~ e3 ~ d3 ~ a2 ~ a2 ~@5",
})).s("gm_electric_bass_pick").gain(0.8).pan(0.1)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@2 A@2 B C@3 D E F G H I J K@3 L M@2 N O P Q R S T U V@2 W X Y X Z ~@15 AA AB@6 X@3 AC G F G H I AD AE AF@2 AG AF AH
  AI AJ AK AH AL ~ AM B AN@2 AO AP AQ AO AQ AO@3 AR
>`.pickRestart({
  A: "[[e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2 [d3,d4]@16 [e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2]/2", B: "[d3,d4]",
  C: "[e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2 [d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4] ~", // E G# B D F# E D
  D: "[e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2 [d3,d4]@2 [f#3,f#4]@2 [e3,e4]@3 ~", // E G# B D F# E
  E: "[a3,c#4]@5 ~ [a3,c#4] ~ [a3,c#4] ~ [a3,c#4]!2 [a3,c#4]@3 ~, e3 ~@15", // A
  F: "[f#3,a3]@5 ~ [f#3,a3] ~ [f#3,a3] ~ [f#3,a3]!2 [f#3,a3]@3 ~", // F#m
  G: "[a3,c#4]@5 ~ [a3,c#4] ~ [a3,c#4] ~ [a3,c#4]!2 [a3,c#4]@3 ~", // A
  H: "[f#3,a3]@5 ~ [f#3,a3] ~ [f#3,a3] ~ [f#3,a3]!2 [f#3,a3]@2 ~@2", // F#m
  I: "[a3,d4]@5 ~ [a3,d4] ~ [a3,d4] ~ [a3,d4]!2 [a3,d4]@3 ~", J: "[a3,d4]@5 ~ [a3,d4] ~ [b3,e4]@5 ~ [b3,e4]@2",
  K: "~@2 [b3,e4] ~@3 [b3,e4] ~ [b3,e4]@5 ~ [b3,e4]@2", // E5
  L: "~@2 [b3,e4] ~@3 [b3,e4]@2 [e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2", // E5 E G# B
  M: "[d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4]@2 [e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2", // D F# E D E G# B
  N: "[d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4]@2 [e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [a2,b2,b3]@2", // D F# E D E G# Asus2
  O: "[d3,d4]@2 [f#3,f#4]@2 [e3,e4]@3 ~ [a3,c#4]@4 ~@2 [a3,c#4] ~", // D F# E A
  P: "[a3,c#4] ~ [a3,c#4]!2 [a3,c#4]@3 ~ [f#3,a3]@5 ~ [f#3,a3] ~", // A F#m
  Q: "[f#3,a3] ~ [f#3,a3]!2 [f#3,a3]@2 ~@2 [a3,c#4]@5 ~ [a3,c#4] ~", // F#m A
  R: "[a3,c#4] ~ [a3,c#4]!2 [a3,c#4]@2 ~@2 [f#3,a3]@5 ~ [f#3,a3] ~", // A F#m
  S: "[f#3,a3] ~ [f#3,a3]!2 [f#3,a3]@2 ~@2 [a3,d4]@5 ~ [a3,d4] ~", // F#m D5
  T: "[a3,d4] ~ [a3,d4]!2 [a3,d4]@3 ~ [a3,d4]@5 ~ [a3,d4] ~", U: "[b3,e4]@5 ~ [b3,e4]@3 ~ [b3,e4] ~@3 [b3,e4] ~",
  V: "[b3,e4]@5 ~ [b3,e4]@3 ~ [b3,e4] ~@3 [b3,e4]!2", W: "[b3,e4]@5 ~ [b3,e4]@3 ~ [b3,e4] ~@3 [b3,e4]@2",
  X: "[e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2 [d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4]@2", // E G# B D F# E D
  Y: "[e2,e3,f3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2 [d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4]@2", // Fmaj7 E G# B D F# E D
  Z: "[e2,e3] ~ e3@3 ~@11, ~@2 e2 ~@13", AA: "~@15 [a3,c#4]",
  AB: "[[a3,c#4,f#4]@5 ~ [a3,c#4,f#4] ~ [a3,c#4,f#4]@3 ~ [a3,c#4,f#4]@2 ~@2 f4@5 ~ [a3,d4,f4] ~ [a3,d4,f4]@3 ~ [a3,d4,f4]@2 ~@2 [b3,e4]@6 [g#3,b3,e4] ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@2 ~@2 [c#4,e4]@5 ~ [a3,c#4,e4] ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@2 [c#4,f#4]@6 [a3,c#4,f#4] ~ [a3,c#4,f#4]@3 ~ [a3,c#4,f#4]@2 ~@2 [d4,f4]@6 [a3,d4,f4] ~ [a3,d4,f4]@3 ~ [a3,d4,f4]@3 ~, ~@15 [a3,d4]@6 ~@10 g#3@6 ~@10 a3@6 ~@10 a3@6 ~@10 a3@6 ~@11, ~@32 [c4,d#4] ~@63]/6", // F#m Dm E5 E C#m A F#5 F#m …
  AC: "[e2,e3] ~ [e2,f2,e3]@2 [g#2,g#3]@2 [a2,b2,b3]@2 [d3,d4]@2 [f#3,f#4]@2 [e3,e4]@3 ~", // E Fmaj7 G# Asus2 D F# E
  AD: "[a3,d4]@5 ~ [a3,d4] ~ [b3,e4]@3 [g#3,b3,e4]!2 ~ [g#3,b3,e4] ~, ~@7 g#3@3 ~@6", // D5 E5 E
  AE: "[g#3,b3,e4]@2 ~ [g#3,b3,e4] [g#3,b3,e4]@3 ~ [b3,e4]@3 [g#3,b3,e4]!2 ~ [g#3,b3,e4] ~, ~@7 g#3@3 ~@6", // E E5 E
  AF: "[g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@2 ~@2 [b3,e4]@3 [g#3,b3,e4]!2 ~ [g#3,b3,e4] ~, ~@7 g#3@3 ~@6", // E E5 E
  AG: "[g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@2 ~@2 [b3,e4]@3 [g#3,b3,e4]!2 ~ [g#3,b3,e4] ~, a#3 ~@6 g#3@3 ~@6", // E E5 E
  AH: "[g#3,b3,e4]@2 ~ [g#3,b3,e4] [g#3,b3,e4]@2 ~@2 [b3,e4]@3 [g#3,b3,e4]!2 ~ [g#3,b3,e4] ~, ~@7 g#3@3 ~@6", // E E5 E
  AI: "[g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 [g#3,b3,e4]!2 ~ [g#3,b3,e4] ~", // E
  AJ: "[g#3,b3,e4]@2 ~ [g#3,b3,e4] [g#3,b3,e4]@2 ~@2 e4@3 [g#3,b3,e4]!2 ~ [g#3,b3,e4] ~, ~@7 [g#3,b3]@3 ~@6", // E G#m
  AK: "[g#3,b3,e4]@2 ~ [g#3,b3,e4] [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 [g#3,b3,e4]!2 ~ [g#3,b3,e4] ~", // E
  AL: "[g#3,b3,e4]@2 ~ [g#3,b3,e4] [g#3,b3,e4]@3 ~ [g#3,b3,e4] ~@7", // E
  AM: "~@8 [e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2", // E G# B
  AN: "[[e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2 [d3,d4]@16 [e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [a2,b2,b3]@2]/2", // E G# B D E G# Asus2
  AO: "[d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4] ~ [e2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2", // D F# E D E G# B
  AP: "[d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4] ~ [e2,f2,e3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2", // D F# E D Fmaj7 E G# B
  AQ: "[d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4] ~ [e2,e3,f3] ~ [e2,e3]@2 [g#2,g#3]@2 [b2,b3]@2", // D F# E D Fmaj7 E G# B
  AR: "[d3,d4]@2 [f#3,f#4]@2 [e3,e4]@2 [d3,d4]@2 [a2,a3] ~ [a2,a3]@2 ~@4", // D F# E D A
})).s("gm_overdriven_guitar").gain(0.46).pan(0.9)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@9 A B C B D E F@3 G ~@3 H I J I K L M@4 ~@4 N O P Q R S T U R V U W X V P C B Y Z C B Y ~@4 A B C B D E F@6 AA F@3 G
  ~@13 AB
>`.pickRestart({
  A: "~@4 [a4,c#5,e5,f5] ~@5 [a4,c#5,e5] ~@5", B: "~@4 [a4,c#5,f#5] ~@5 [a4,c#5,f#5] ~@5",
  C: "~@4 [a4,c#5,e5] ~@5 [a4,c#5,e5] ~@5", D: "~@4 [a4,d5,f#5] ~@5 [a4,d5,f#5] ~@5",
  E: "~@4 [a4,d5,f#5] ~@7 [b4,e5,g#5] ~@3", F: "~@2 [b4,e5,g#5] ~@9 [b4,e5,g#5] ~@3", G: "~@2 [b4,e5,g#5] ~@13",
  H: "~@12 [a4,c#5,e5] ~@3", I: "~@2 [a4,c#5,e5] ~@9 [a4,c#5,f#5] ~@3", J: "~@2 [a4,c#5,f#5] ~@9 [a4,c#5,e5] ~@3",
  K: "~@2 [a4,c#5,f#5] ~@9 [a4,d5,f#5] ~@3", L: "~@2 [a4,d5,f#5] ~@9 [a4,d5,f#5] ~@3",
  M: "~@4 [b4,e5,g#5] ~@5 [b4,e5,g#5] ~@5", N: "~@3 f4 a4@2 d5@2 a4@2 g4 ~ g4@2 f4 ~",
  O: "~@3 g4 b4@2 d5@2 b4@2 a4 ~ a4@2 g4 ~", P: "~@2 g4 a4 c5 ~ g5@2 f5@2 e5@2 d5@2 c5@2",
  Q: "~@2 e4 g4 a4 ~ e5@2 d5@2 c5@2 b4@2 a4 ~", R: "~@2 a4 c5 d5 ~ a5@2 g5@2 f5@2 e5@2 d5 ~",
  S: "~@4 a4@2 d5@2 c5@2 b4@2 a4@2 g4 ~", T: "~@2 g4 a4 c5@2 g5@2 f5@2 e5@2 d5@2 c5 ~",
  U: "~@2 g4 a4 c5 ~ g5@2 f5@2 e5@2 d5@2 c5 ~", V: "~@3 g4 a4@2 d5@2 c5@2 b4@2 a4@2 g4 ~",
  W: "~@2 e4 g4 a4@2 e5@2 d5@2 c5@2 b4@2 a4 ~", X: "~@2 a4 c5 d5@2 a5@2 g5@2 f5@2 e5@2 d5@2",
  Y: "~@4 [a4,d5,f5] ~@5 [a4,d5,f5] ~@5", Z: "~@4 [g#4,b4,e5] ~@5 [g#4,b4]@2 ~@4, ~@10 e5 ~@5",
  AA: "~@2 [b4,e5] ~@9 [b4,e5,g#5] ~@3, ~ g#5@2 ~@13", AB: "~@8 [e5,a5] ~ [e5,a5] ~@5",
})).s("gm_synth_brass_1").gain(0.8).pan(0.1)

// other · synth brass 1
const synth_brass_1_2 = note(`<
  ~@8 A@2 B C D E ~@8 F@6 ~@8 G H I J@2 K L ~ G M N O P Q R S T U V W T X V Y Z@2 AA AB@2 AC E ~@23 AD@3
>`.pickRestart({
  A: "[~@11 e4 ~ e4@2 d4@3 c#4@9 ~ e4 ~ e4@2]/2", B: "d4@2 c#4@4 e4@5 ~ d4@2 e4@2", C: "d4@2 c#4@9 ~ e4 ~ e4@2",
  D: "d4@2 c#4@3 e4@5 ~@2 e4 e4@3", E: "d4 ~ d4@14",
  F: "[~@4 e4 ~ e4@2 d4@2 c#4@9 ~ e4 ~ e4@2 d4@2 c#4@4 e4@4 ~@2 d4@2 e4@2 d4@2 c#4@9 ~ e4 e4@2 ~ d4@2 c#4@4 e4@5 ~ e4 ~ e4@2 d4 ~ d4@14 ~@8]/6",
  G: "~@4 a4 ~ a4 ~ a4@4 g4@3 ~", H: "g4@2 f4@3 ~ f4@10", I: "~@4 g4!2 ~@2 g4@4 f4@3 ~",
  J: "[f4@2 e4@2 ~@2 e4@12 ~@2 f4 ~ f4 ~ f4@4 e4@3 ~]/2", K: "e4@2 d4@3 ~ c4@6 ~ d4@2 ~", L: "e4",
  M: "g4@2 f4@3 ~ g4@9 ~", N: "~@4 g4 ~ g4 ~ g4@4 f4@3 ~", O: "f4 e4 ~ e4@5", P: "~@4 f4 ~ f4 ~ f4@4 e4@3 ~",
  Q: "e4@2 d4@3 ~ c4@6 ~ d4@3", R: "e4@11 ~ e4@3 ~", S: "e4@11 ~ d4@2 c#4@2", T: "b3@3 c#4@5",
  U: "~@4 d4@3 ~ d4@5 ~ d4@2", V: "e4@15 ~", W: "~ e4 d4 c#4", X: "~@4 d4@3 ~ d4@4 ~@2 d4@2", Y: "e4@7 ~",
  Z: "[g#4@23 ~@5 e4 ~ e4@2]/2", AA: "d4@2 c#4@8 ~@2 e4@3 ~",
  AB: "[d4 ~ c#4@3 ~ e4@5 ~ d4 ~@2 d4@2 ~ c#4@9 ~ e4@4, ~@7 e4 ~@8]/2", AC: "d4 ~ c#4@3 ~ e4@5 ~ e4 e4@2 ~",
  AD: "[~@8 c#4@15 b3@11 ~@2 e4 ~ e4@2 d4@2 c#4@2 ~@4]/3",
})).s("gm_synth_brass_1").gain(0.8).pan(0.6)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@37 A ~ A ~@3 B ~ A ~ A ~@6 A ~ A ~@36>".pickRestart({
  A: "~@10 x!3 ~ x ~", B: "~@2 x!3 ~ x!3 ~@2 x!2 ~ x ~",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!8 ~@69 [~@4 x!4] [x!8]!13 [x!6 ~@2]>").gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@43 x ~@49>").gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@44 x ~@12 x ~@35>").gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@9 A@28 B A B A@3 ~ C B A B A@6 B A B C A@20 D ~@14>".pickRestart({
  A: "x!8", B: "x!5 ~@3", C: "~@2 x!6", D: "x!4 ~@4",
})).gain(0.8)

stack(
  distortion_guitar, bass, overdriven_guitar, synth_brass_1, synth_brass_1_2, kick, snare, low_tom, hihat, open_hat,
  crash, ride
)

More by Van Halen