Strudelify

Mean Street

Van Halen

KeyA minorTempo100 bpm
0:00/0:00
// Mean Street — Van Halen
// 100 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// other · distortion guitar · "Main Guitar"
const distortion_guitar = note(`<
  A B A C A D A E F G F G F G F G H I J K H L M N F G F G F G F G H I O P H Q R S T U V W T U X Y Z AA AB AC AD AE AF F
  G F G F G F G H I O P H Q R ~ AG@2 AH@2 AG@2 AH@2 AG@2 ~@2
>`.pickRestart({
  A: "[g4,c5] a4 ~ a4 ~ g4 c5 a4 ~ a4 ~ e4 g4@2 a4 g4", B: "[g4,c5] a4 ~ a4 ~ e4 [d4,g4,b4]@8 ~@2",
  C: "[g4,c5] a4 ~ a4 ~ e4 g4@2 ~@8", D: "[g4,c5] a4 ~ a4 ~ g4 c5 a4!2 g4!4 e4!3", E: "~@7 [g4,c5]@8 ~",
  F: "c4 a3 ~ a3 ~ g3 c4 a3 ~ a3 ~ e3 [g3,d4]@3 ~", G: "c4 a3 ~ a3 ~ g3 c4 a3!2 g3!4 e3!3",
  H: "c4 a3!4 [g4,c5]@4 c4 a3!2 [d4,a4]@2 ~@2", I: "c4 a3!4 [a4,d5]@4 c4 a3!2 [d4,a4]@2 ~@2",
  J: "c4 a3!4 [c5,f5]@5 a3!2 [f4,c5,f5]@2 [g4,d5,g5]@2", K: "[c4,g4] a3!4 [e5,a5]@5 ~@3 e4@2 ~",
  L: "c4 a3!4 [a4,d5]@4 [a4,d5] [a4,d5]@2 g4@2 ~@2", M: "[a3,e4]@2 [a3,e4]@2 [a3,e4]@2 ~ [d4,g4,b4] [d4,a4,d5]@7 f#5",
  N: "[e3,b3]!9 ~@7", O: "c4 a3!4 [c5,f5]@2 ~@5 [f4,c5,f5]@2 [g4,d5,g5]@2", P: "c4 a3@2 e4 a4@2 a4 g5@6 e5 g5@2",
  Q: "c4 a3!4 [a4,d5]@8 [d5,g5] c#4@2", R: "[a3,e4]@6 ~ [d4,a4] [d4,a4,d5]@5 ~@3",
  S: "[g4,g5] [a4,a5]@2 [f#5,a5] f#5 ~ [e5,a5]@2 ~ [d5,f#5] ~ [d5,f#5] d5 c5 a4 g4", // G A F#m A5 D
  T: "a3!2 g5 a5@2 [f#5,a5] ~@2 [b4,f#5] [c5,g5] d4!2 [f#5,b5] [g5,c6] d4!2", // F#m B5 C5 B5 C5
  U: "[g5,d6] [a5,e6]@2 [a5,e6] f#5 ~ [e5,a5]@2 ~ f#5 ~ [d5,f#5] d5 c5 a4 g4", // G5 A5 D
  V: "a3!2 [g5,b5] [a5,c6]@3 ~ f#5 [b4,f#5] [c5,g5] d4!2 [f#5,b5] [g5,c6] d4!2", // G Am B5 C5 B5 C5
  W: "[d6,b6] [e6,c7]@2 [f#5,a5] ~ e5 [e5,a5]@3 f#5 ~@2 d5 c5 a4 g4", // G C F#m A5
  X: "a3!2 g5 a5@2 [f#5,a5] d4!2 [f#5,b5] [g5,d6] d4!2 [f#5,b5] [g5,c6] d4@2", // F#m B5 G5 B5 C5
  Y: "g5@3 ~@2 f#5 ~ f#5!2 g5 ~ g5 ~ g5 ~@2", Z: "e5@3 ~ d#5@2 e5@2 d5 ~ c5 a4 [d5,f#5] c5 a4@2",
  AA: "a4@2 c5 b5 ~ d6 ~ c6 ~ b5 a5 e5 g5 [a5,b5] c6 [d6,e6]", // Asus2 Dsus2
  AB: "d6 [b5,c6] [a5,d6] b5 [f#5,g5]@2 g5@4 ~ c5 ~ g5 b5 [g5,a5]", // Cmaj7 D5 Gmaj7 Gsus2
  AC: "a5 [f#5,g5] [g5,a5] [e5,f#5] [c#5,f#6] [d6,e6] [c#6,f6] [c6,e6] f6 [d6,e6] c6 [c6,d6] ~ [a5,c6] [g5,c6] c#6", // Gmaj7 Gsus2 Esus2 F#5 Dsus2 C# C Dsus2 …
  AD: "a5 [g5,c#6] c6 [a5,c#6] [g5,c6] c#6 c6 [g4,a5] f4 g4 f4 g6 b6 g6 e6 d#6", // Gdim A C5 Gsus2
  AE: "g6@2 g6 ~ [e6,g6]!3 [d6,e6] [c6,d6]@2 ~ g5 ~@4", // Em Dsus2 Csus2
  AF: "c#6 [a4,c#5] c5 c#5 e5 a5 g5 e5 a5 c#6!2 [a5,b5,c#6] [g5,e6]@3 ~", AG: "[[g4,d5]@13 ~@3]/2",
  AH: "[[a4,d5,f#5]@13 ~@3]/2", // D
})).s("gm_distortion_guitar").gain(0.22)

// chords · shamisen · "Fret Noise" · G E7 G E7
const shamisen = note("<~@7 [[g3,b3,d4]!4 [e3,b3,d4]!3 ~@9] ~@62 [[g3,b3,d4]!4 [e3,b3,d4]!3 ~@9] ~@12>")
  .s("gm_shamisen").gain(0.23)

// chords · shamisen · "Fret Noise" · soft notes · Fmaj7
const shamisen_soft = note("<~@82 [~@12 [f3,c4,d4,e4,f4] ~@3]>").s("gm_shamisen").gain(0.04)

// other · guitar harmonics · "Harmonics"
const guitar_harmonics = note(`<
  ~@3
  [~@8 d5 b5 g5 a4 d5 d4 b4 g4]
  ~@36
  [~@2 g5 a5@2 ~@11]
  ~@6
  [g5@3 ~@2 f#5 ~ f#5!2 g5 ~ g5 ~ g5 ~@2]
  ~@35
>`).s("gm_guitar_harmonics").gain(0.48)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@4 A B C D E F E F E F E F G@2 H I G@2 J K E F E F E F E F G@2 H L G@2 M ~ N ~ N ~ N ~ N O P@2 Q@2 R@2 S E F E F E F
  E F G@2 H L G@2 M ~ E F E F E F E F E F E F
>`.pickRestart({
  A: "c3 a2 ~ a2 ~ g2 c3 a2 ~ a2 ~ e2 g2@3 ~", B: "c3 a2 ~ a2 ~ g2 c3 a2!2 g2!4 e2!3",
  C: "c3 a2 ~ a2 ~ g2 c3 a2 ~ a2 ~ e2 g2@2 ~ d3", D: "a3 g3 e3 d3 g2 a2 g2 c2@7 ~@2",
  E: "a1!2 ~ a1 ~ g1 c2 a1 ~ a1 ~ e1 g1@3 ~", F: "c2 a1 ~ a1 ~ g1 c2 a1!2 g1!4 e1!3", G: "a1!16",
  H: "a1!5 a2@2 a2@2 a1!3 e1!2 g1@2", I: "a1!9 a2@2 g2 e2 d#2 d2 c2",
  J: "a1@2 a1!2 c#2 e2 f#2 e2 d2@2 d3 d2 d3 d2 c3 b2", K: "e2@2 e2!2 d2 b1 g#1 g1 e1@3 ~@5",
  L: "a1!9 c2@2 c2@2 g1@2 g#1", M: "a1@2 a1!2 c#2 e2 f#2 e2 d2@5 ~@3", N: "a1!2 ~@14", O: "a1@2 a1!2 a1@2 a1!7 a2 c2@2",
  P: "[c2@2 a1!12 g1 g1@3 a1!12 c2@2]/2", Q: "[c2@2 a1!7 c2@2 a2@2 g2 e2@4 a1!12 c2@2]/2",
  R: "[c2@2 a1!12 g1@4 a1!12 e2 ~]/2", S: "a2 f#2 g2 g#2 a2 f#2 g2 g#2 a2 g2 g#2 a2 c2@3 ~",
})).s("gm_electric_bass_pick").gain(0.23)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@46 [~@14 x!2] ~@36>").gain(0.48)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@3 A B@3 ~ B@7 C B@7 D B@7 C B@3 E B@3 ~ F ~ F ~ F ~ G B@7 H B@7 C B@3 E B@3 ~ B@12
>`.pickRestart({
  A: "~@8 x!8", B: "x!2 ~ x ~ x!3 ~ x ~ x!2 ~ x!2", C: "x!2 ~ x ~ x!11", D: "x!8 ~@8", E: "x!2 ~ x ~ x!3 ~ x ~ x!5",
  F: "x!2 ~@14", G: "x!2 ~ x ~ x!5 ~ x!3 ~@2", H: "x!11 ~@5",
})).gain(0.48)

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

// drums · congas
const congas = s("conga:33").struct("<~@46 [~@14 x!2] ~@36>").gain(1.54)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@4 A@3 B A@7 C A@7 ~ A@7 C A@22 ~ A@7 C A@7 B A@12>".pickRestart({
  A: "x!16", B: "x!9 ~@7", C: "x!8 ~@8",
})).gain(2.43)

stack(
  distortion_guitar, shamisen, shamisen_soft, guitar_harmonics, bass, snare, mid_tom, high_tom, china, congas, cabasa
)

More by Van Halen