Strudelify
I Want A New Drug cover art

1984 · Sports

I Want A New Drug

Huey Lewis

KeyA majorTempo112 bpm
0:00/0:00
// I Want A New Drug — Huey Lewis
// 112 bpm, 4/4, key A major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(112/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.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A@12 B C@3 A@2 D@2 E F@2 A@8 B C@3 A@2 D@2 E F@2 A@44 B C@3 A@2 D@2 E F@2 A@27 G@2 ~
>`.pickRestart({
  A: "a0 ~ a0 ~ c#1 ~ e1 ~ g1 ~ g1 ~ d1 ~ d1 ~", B: "a0 ~ a0 ~ c#1 ~ e1 ~ c1 ~ c1 ~ g0 ~ g0 ~",
  C: "d1 ~ d1 ~ f#1 ~ a1 ~ c1 ~ c1 ~ b0 ~ b0 ~", D: "e0 e1", E: "c1 c2 f1 c2", F: "[c1@2 c2@2 d1@8 d0 ~@3]/2",
  G: "[a0 ~ a0 ~ c#1 ~ e1 ~ g1 ~ g1 ~ d1@20]/2",
})).s("gm_fretless_bass").gain(0.72)

// other · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@5 A ~@2 B@2 C D E F G H I J ~ K L M N O P ~@2 Q@3 R S F G T U V ~ K W X Y Z AA@4 ~@35 AB AC C D AD F AE AF AG AH ~ K
  W AI AJ@5 ~@27
>`.pickRestart({
  A: "~@6 a4!2", B: "[~@11 f#3 a3 f#3 a3@4 a3@4 ~@4 f#3!2 a3@2 a3!2]/2", C: "c#4 ~@7",
  D: "~@2 c#4!3 ~ a3 f#3 a3 ~ a3@2 c#4@2 ~@2", E: "~ f#3 a3 f#3 a3@2 ~@2 a3 ~ a3@2 a3@2 ~@2", F: "~@11 a3!4 ~",
  G: "d4@3 ~@7 b3!2 d4 ~ d4!2", H: "f#4 ~@7", I: "~@2 f#4!3 ~ d4 b3 d4@2 d4@2 f#4@2 ~@2",
  J: "~ a3 c4 a3 c4@2 ~@4 a3@3 a3@3", K: "g4!3 ~ e4@2 ~ g4@2 g4@2 ~@5, ~@3 e4 ~@4", L: "g4!3 ~ e4 ~ e4 g4@2 ~@7",
  M: "e4 ~ e4@2 e4@2 e4 ~ f4@3 f4@3 f4 ~", N: "e4@2 d4 c4@2 d4@2 ~ d4@8", O: "~@6 g3 ~ a3!2 ~ c4@2 g3 a3 ~",
  P: "c3 ~@15", Q: "[~@11 f#3 a3 f#3 a3@4 a3@4 ~@6 a3 f#3 a3@4 c#4@3 ~@11]/3", R: "~@2 c#4!3 ~@3 a3 ~ a3 ~ c#4 ~@3",
  S: "~@2 f#3 ~ a3 f#3 a3!2 ~@8", T: "f#4@3 ~@13", U: "~@2 f#4!3 ~ d4 b3 d4!2 ~ f#4@2 ~@3",
  V: "~@2 c4!3 ~ c4 a3 c4@2 a3@2 ~@2 a3@2", W: "g4!3 e4 ~ e4 g4@2 ~@8", X: "e4 ~ e4 ~ e4 ~ e4 ~ f4@3 f4@2 f4 ~@2",
  Y: "e4@2 d4 c4@2 d4@3 d4@3 ~@5", Z: "~@8 e4 d4!2 ~@5",
  AA: "[~@12 c4@3 a3@3 ~@10 e4 d4@2 d4@2 ~@3 c4@2 a3@3 ~ a3@2 ~ a3 g3 e3@2 ~@15]/4", AB: "~@11 f#3 a3 f#3 a3@2",
  AC: "~@2 a3@2 ~@6 f#3!2 a3 ~ a3!2", AD: "~@2 g3!2 a3@2 g3 e3 a3 ~ a3@2 a3@2 ~@2", AE: "d4@3 ~@9 d4 b3 d4@2",
  AF: "~ f#4 ~@6", AG: "~@2 f#4!3 ~ d4 b3 d4 ~ d4 ~ f#4@2 ~@2", AH: "~ c4 d4!2 g4@2 ~@4 a3@2 ~@2 a3@2",
  AI: "e4@2 e4@2 e4 ~ e4 ~ f4@3 f4@3 f4@2",
  AJ: "[e4@2 d4 c4@2 d4@2 ~ d4@14 ~@2 e4 d4 ~ d4@17 c4@3 a3@3 ~@10 e4 d4 ~ d4@4 ~ d4@2 c4@3 a3@3 ~ g3 e3@2, ~@76 a3@3 ~]/5",
})).s("gm_epiano2").gain(0.72)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@9 A B A B C D C D E F ~@9 A B A B C D C D E F ~@45 A B A B C D C D E F ~@35
>`.pickRestart({
  A: "~@2 [d4,g4,a4] [d4,f#4,a4]", B: "~@2 [b3,d4,g4,a4] [a3,d4,f#4,a4]", C: "~@2 [e4,g4,c5,d5] [d4,g4,b4,d5]",
  D: "~@2 [d4,g4,c5,d5] [d4,g4,b4,d5]", E: "~@2 [a3,d4,g4,a4] [a3,d4,f#4,a4]",
  F: "~@8 [a3,d4,g4,a4] ~ [a3,d4,g4,a4] ~ [a3,d4,f#4,a4]@2 ~@2", // Dsus4 D
})).s("gm_brass_section").gain(0.64).pan(0.6)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~ A ~ A ~ A ~ A ~@11 B@2 C@3 ~@14 B@2 C@3 ~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@15 B@2 C@3 ~@12 A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A D@2 ~
>`.pickRestart({
  A: "~@12 [a4,d5,f#5,a5]@3 ~", B: "[~ d5 c#5@2 ~ d5 [a4,c#5]@2, e5, ~@2 b4 ~]/2",
  C: "[~@2 a#4@2 f4@2 f4@2 [e4,g4]@4 [d4,f#4,a4,d5]@7 ~ [a4,d5,f#5] ~@3, c5 ~, [e4,g4] a4 ~@4]/3", // Em D Em
  D: "[~@4 [b4,d5,g5]!2 [a4,f#5]@10, ~@12 d5 ~@19]/2", // G D
})).s("gm_rock_organ").gain(0.5).pan(0.4)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~ A B A B A B A B ~@9 C D@2 E F@3 B A B ~@9 C D@2 E F@3 B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B ~@9 C D@2 E G@3 ~@3 A B A B A B A B A B A B A B A B A B A B A B A H@2 ~
>`.pickRestart({
  A: "a2@3 [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] [d3,g3]@4 [a2,f#3]@2 ~@2, ~@3 d3", // A5 G5 D
  B: "a2@3 [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] [d3,g3]@2 [d3,g3]@2 [a2,d3,f#3]@2 ~@2", // A5 G5 D
  C: "a2@3 [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] [d3,g3] ~ [d3,g3] ~ [a2,d3,f#3]@2 ~@2", D: "[e2,b2,e3]/2",
  E: "[g2,c3] [f2,c3,f3]", // C5 F5
  F: "[g2@8 [a2,d3]@16 a2@8 a2@3 [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] [d3,g3]@4 [a2,f#3]@2 ~@2, c3 ~@23 d3@16 ~@4 d3@4, ~@12 a3 ~@11]/3", // D5 A5 G5 D
  G: "[g2 [a2,d3]@2 [a2,d3]@2 ~, c3 ~@23 a3@2 ~@22]/3", // D5
  H: "[a2@3 [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] [d3,g3]@2 [d3,g3]@2 [a2,f#3]@20, ~@12 d3 ~@19]/2", // A5 G5 D
})).s("gm_overdriven_guitar").gain(0.52)

// chords · tenor sax
const tenor_sax = note(`<
  ~@47 A B C D E F G H I@3 J@2 I@23 ~@19 A B C D E F G H I@3 J@2 I@2 J@2 I@2 J@2 I@2 K@2 ~
>`.pickRestart({
  A: "~@2 [c#4,c#5]@3 [a3,a4]@3 [b3,b4]@3 [g3,g4]@3 [a3,a4]@2", // C# A B G A
  B: "~ [e3,e4]@3 [d3,d4] ~ [e3,e4] ~ [g3,g4] [d3,d4] [e3,e4] [a3,a4] [g3,g4] [e3,e4] [d3,d4] [e3,e4]", // E D E G D E A G …
  C: "~@2 [c#4,c#5]@3 [a3,a4]@3 [b3,b4]@3 [g3,g4]@3 [a3,a4] ~", // C# A B G A
  D: "~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~@3 [d4,g4,a4] ~ [d4,g4,a4] ~ [d4,g4,a4]!2 ~", // A Dsus4
  E: "c#4 d4 e4 a4@3 e4 f#4 g4 a4 b4 d5 c#5 b4 g4 a4",
  F: "b4 a4@2 c#4 d4 e4 f#4 e4 ~ [a3,d4,g4] ~ [a3,d4,g4] ~ [a3,d4,g4]!2 ~", // Dsus4
  G: "~@2 [c4,c5] [c#4,c#5] [e4,e5] [f#4,f#5] [e4,e5] [c#4,c#5] [g4,g5] [e4,f#4,e5,f#5] [f#4,f#5] [g4,g5] [f#4,f#5] [e4,e5] [d4,d5] [e4,e5]", // C C# E F# E C# G Esus2 …
  H: "~ [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4] [a3,c#4,e4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [a3,d4,f#4]@3 ~", // A G D
  I: "~@3 [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] [b3,d4,g4]@3 ~@5", // A G
  J: "[~@3 [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] [b3,d4,g4]@3 ~@4 g2@2 ~@2 [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] [b3,d4,g4]@3 ~@5]/2", // A G A G
  K: "[~@3 [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] [b3,d4,g4] ~ [b3,d4,g4] ~ [a3,d4,f#4]@20]/2", // A G D
})).s("gm_tenor_sax").gain(0.48)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~@8 A@2 B C D E F G H I ~@3 J K ~@4 L@3 M N E F O P Q ~@3 R S ~@40 T U B C V E W X Y Z ~@3 AA AB@2 ~@30
>`.pickRestart({
  A: "[~@11 f#4 a4 f#4 a4@4 a4@4 ~@4 f#4!2 a4@2 a4!2]/2", B: "c#5 ~@7", C: "~@2 c#5!3 ~ a4 f#4 a4 ~ a4@2 c#5@2 ~@2",
  D: "~ f#4 a4 f#4 a4@2 ~@2 a4 ~ a4@2 a4@2 ~@2", E: "~@11 a4!4 ~", F: "d5@3 ~@7 b4!2 d5 ~ d5!2", G: "f#5 ~@7",
  H: "~@2 f#5!3 ~ d5 b4 d5@2 d5@2 f#5@2 ~@2", I: "~ a4 c5 a4 c5@2 ~@4 a4@3 a4@3",
  J: "g4 ~ g4@2 g4@2 g4 ~ a4@3 a4@3 a4 ~", K: "g4@2 f4 e4@2 f#4@2 ~ f#4@8",
  L: "[~@11 f#4 a4 f#4 a4@4 a4@4 ~@6 a4 f#4 a4@4 c#5@3 ~@11]/3", M: "~@2 c#5!3 ~@3 a4 ~ a4 ~ c#5 ~@3",
  N: "~@2 f#4 ~ a4 f#4 a4!2 ~@8", O: "f#5@3 ~@13", P: "~@2 f#5!3 ~ d5 b4 d5!2 ~ f#5@2 ~@3",
  Q: "~@2 c5!3 ~ c5 a4 c5@2 a4@2 ~@2 a4@2", R: "g4 ~ g4 ~ g4 ~ g4 ~ a4@3 a4@2 a4 ~@2",
  S: "g4@2 f4 e4@2 f#4@3 f#4@3 ~@5", T: "~@11 f#4 a4 f#4 a4@2", U: "~@2 a4@2 ~@6 f#4!2 a4 ~ a4!2",
  V: "~@2 g4!2 a4@2 g4 e4 a4 ~ a4@2 a4@2 ~@2", W: "d5@3 ~@9 d5 b4 d5@2", X: "~ f#5 ~@6",
  Y: "~@2 f#5!3 ~ d5 b4 d5 ~ d5 ~ f#5@2 ~@2", Z: "~ c5 d5!2 g5@2 ~@4 a4@2 ~@2 a4@2",
  AA: "g4@2 g4@2 g4 ~ g4 ~ a4@3 a4@3 a4@2", AB: "[g4@2 f4 e4@2 f#4@2 ~ f#4@14 ~@10]/2",
})).s("gm_piano").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  A B@14 C B@2 D B@4 E B@3 F B@6 C B@2 D B@4 G B@11 H B@15 H B@18 C B@2 D B@3 I G B@7 J B@3 H B@15 H ~ K
>`.pickRestart({
  A: "~@15 x", B: "x!2", C: "x ~@7 x ~@6 x", D: "x ~@7 x ~ x ~@2 x!2 ~", E: "x ~ x ~@2 x ~@2 x ~@7", F: "x ~@6 x",
  G: "~ x", H: "x ~@3 x!3 ~", I: "x ~@7 x ~@2 x ~ x ~ x", J: "x!2 ~ x ~ x ~@2 x ~@7", K: "x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@22 B A@3 C A@13 D E A@3 F A@7 D A@15 G A@7 H A@3 G A@14 I A@7 J A@3 D A@7 G A@3 K A@3 D ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~", C: "~@4 x ~@2 x!2 ~@3 x ~@3", D: "~ x ~@2", E: "~ x", F: "~@4 x ~@5 x ~ x ~ x!2",
  G: "~@2 x ~@2 x!2 ~", H: "~@4 x ~@6 x!2 ~@3", I: "x!2", J: "~ x ~ x ~ x ~@6 x ~@3", K: "~@4 x ~@6 x!2 ~ x!2",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@42 A ~@19 B ~@34 C ~@3 D ~@24 B ~>".pickRestart({
  A: "~@2 x ~@2 x ~@10", B: "~@15 x", C: "~@3 x ~@4", D: "~@14 x!2",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@18 B@3 C D A@3 E A@10 B@4 ~ A@11 F A@23 G A@14 B@3 H ~ A@7 I A@3 F A@3 J A@11 F ~@2
>`.pickRestart({
  A: "x!8", B: "x!2", C: "x ~@3 x!4", D: "x!5 ~@3", E: "x!5 ~ x!2", F: "x!4 ~@4", G: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~",
  H: "x", I: "x!2 ~ x ~ x!2 ~ x ~ x ~ x ~ x ~", J: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@27 A ~@13 B C ~@19 B ~@34 D ~@3 E ~@24 F ~>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~@5 x ~@10", D: "~@4 x!2 ~@10", E: "~@12 x!2 ~@2", F: "~@15 x",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@41 A B ~@54 C ~@3 D ~@24 E ~>".pickRestart({
  A: "~@13 x ~@2", B: "~ x ~@14", C: "~@3 x ~@12", D: "~@10 x!2 ~@4", E: "~@7 x",
})).gain(0.64)

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

stack(
  bass, epiano2, brass_section, rock_organ, overdriven_guitar, tenor_sax, piano, kick, snare, low_tom, hihat, mid_tom,
  high_tom, crash
)

More by Huey Lewis