Strudelify
You Drive Me Crazy cover art

1990

You Drive Me Crazy

Stevens Shakin

KeyF majorTempo123 bpm
0:00/0:00
// You Drive Me Crazy — Stevens Shakin 
// 123 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B A B A B A B C B C B A B A B C B C B D E D E D@2 F G A B A B C B C B H I H I J I C B D E D E D@2 F G A B A B C B C
  B A B A B C B C B C B C B C B C B C B C B K
>`.pickRestart({
  A: "f2@5 ~ f2@2 d2@4 ~@2 d2@2", B: "bb1@5 ~ bb1@2 c2@5 ~ c2@2", C: "f1@5 ~ f1@2 a1@4 ~@2 a1@2", D: "bb1@3 d2@3 f2@2",
  E: "c2@3 e2@3 g2@2", F: "g1@3 b1@3 d2@2", G: "c2 ~ c2 ~ c2 ~ c2@2 ~@8", H: "g2@5 ~ g2@2 e2@4 ~@2 e2@2",
  I: "c2@5 ~ c2@2 d2@5 ~ d2@2", J: "g1@5 ~ g1@2 b1@4 ~@2 b1@2", K: "f1@7 ~",
})).s("gm_electric_bass_finger").gain(0.52)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B A B A B A B C B C B A B A B C B C B D E D E D@2 F G A B A B C B C B H I H I F I C B D E D E D@2 F G A B A B C B C
  B A B A B C B C B C B C B C B C B C B C B J
>`.pickRestart({
  A: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~", // F Dm
  B: "[bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // Bb C
  C: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  D: "[bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~", // Bb
  E: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  F: "[b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~", // G
  G: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~@9", // C
  H: "[b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~", // G Em
  I: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [a3,d4,gb4] ~ [a3,d4,gb4] ~ [a3,d4,gb4] ~ [a3,d4,gb4] ~", // C D
  J: "[a3,c4,f4]@7 ~", // F
})).s("gm_piano").gain(0.29).pan(0.8)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@8 A@2 B@2 ~@4 A@2 C@2 ~@12 A@2 ~ D@2 E@2 F ~ G@2 H I ~@11 A@2 C@2 ~@4 A@2 B@2 J K L M A@2 ~@4 B@2 N
>`.pickRestart({
  A: "[~@14 bb2@4 [d4,f4,bb4] ~@3 c3@7 ~@3]/2", // Bb
  B: "[~@14 bb2@4 [d4,f4,bb4] ~@7 [e4,g4,c5] ~ [e4,g4,c5] ~@3, ~@11 c3@3 ~@2]/2", // Bb C
  C: "[~@14 bb2@4 [d4,f4,bb4] ~@7 [e4,g4,c5] [g4,c5] [e4,g4,c5] ~@3, ~@11 c3@3 ~@2]/2", D: "[~@7 g3@4 e3@5]/2",
  E: "[c3@4 d3@3 g3@4 e3@5]/2", F: "c3 d3", G: "[~@7 f2@3 a2 c3!2 f3 g3 f3]/2",
  H: "d4@2 f4 bb4 g4 f4 d4@2 e4@2 g4 c5 a4 g4 e4@2", I: "f4@7 ~", J: "~@14 f2 ~", K: "f2@4 ~@2 f2 ~ f2@4 ~@4",
  L: "~@14 [bb2,d3,f3]!2", M: "[bb2,d3,f3]@2 [bb2,d3,f3]@2 [bb2,d3,f3] ~ [c3,e3,g3]!6 [c3,e3,g3]@3 ~",
  N: "[f3,c4,f4,a4] ~@15", // F
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_2 = note("<~@36 A B A B C@2 D E F ~@29 G@2 H I@2 ~@2>".pickRestart({
  A: "~@2 [e5,a5]@2 [e5,a5]!4 [e5,a5]@2 ~ g5 [d5,g5]@4, ~@5 [d5,g5] ~@2", // A5 G5
  B: "[b4,e5]@2 [b4,e5]!2 [a4,d5]@4 [gb4,b4]@2 [gb4,b4]!2 [e4,a4]@4", // E5 D5 B5 A5
  C: "[~@2 g3 ~ g3 [g3,b3]!2 g3 ~@2 g3@2 ~@2 g3@2 ~@2 e3@2 ~@2 e3@2 ~@4 g3@4, ~@4 f3@3 ~ c3@2 g3@2 d3@2 ~@2, ~@6 d4@5 ~@2 gb3@2 ~]/2", // G
  D: "f2@2 a2 c3!2 f3 g3 f3", E: "d4@2 f4 bb4 g4 f4 d4@2 e4@2 g4 c5 a4 g4 e4@2", F: "f4@7 ~",
  G: "[~@10 f5 d5 c5 a4 a4@4 d5@2 a4 ~ a4@2 g4@6 ~@2]/2", H: "~@5 [f4,a4] [g4,bb4] [f4,a4]",
  I: "[[a4,c5]@2 [a4,c5]@2 [g4,bb4] [f4,a4]@2 [f4,a4]@2 ~@7]/2", // Am Gm F
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.2)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B A B A B A B C B C B A B A B C B C B D E D E D@2 F G A B A B C B C B H I H I J I C B D E D E D@2 F G A B A B C B C
  B A B A B C B C B C B C B C B C B C B C B K
>`.pickRestart({
  A: "[a3,c4,f4,a4]@2 a3 [a3,c4,f4,a4] [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4]@2 [d4,f4]@2 [d4,f4]@2 [a3,d4,f4,a4]@2, ~@2 a4@2 ~ [a3,a4]@2 ~", // F Dm A
  B: "[bb3,d4,g4,bb4]@2 d4 [bb3,d4,g4,bb4] [bb3,d4,g4,bb4]@2 [bb3,d4,g4,bb4]@2 [g3,c4,e4,c5]@4 [g3,c4,e4,bb4]@4", // Gm C C7
  C: "[a3,c4,f4,a4]@2 a3 [a3,c4,f4,a4] [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [c4,f4]@2 [c4,f4]@2 [a3,c4,f4,a4]@2, ~@2 a4@2 ~ [a3,a4]@2 ~", // F F5 F A
  D: "[bb3,d4,f4,bb4]@2 bb3 [bb3,d4,f4,bb4] [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [d4,f4]@2 [d4,f4]@2 [bb3,d4,f4,bb4]@2, ~@2 bb4@3 [bb3,bb4]@2 ~", // Bb Dm Bb
  E: "[g3,c4,e4,c5]@2 g3 [g3,c4,e4,c5] [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [c4,e4]@2 [c4,e4]@2 [g3,c4,e4,c5]@2, ~@2 c5@3 [g3,c5]@2 ~", // C C5
  F: "[b3,d4,g4,b4]@2 b3 [b3,d4,g4,b4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [b3,d4,g4,b4]@2, ~@2 b4@3 [b3,b4]@2 ~", // G G5 G B
  G: "[g3,c4,e4,c5]@2 g3 [g3,c4,e4,c5] [g3,c4,e4]@2 [g3,c4,e4]@2 ~@8, ~@4 c5@5 ~@7", // C
  H: "[b3,d4,g4,b4]@2 b3 [b3,d4,g4,b4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,e4,g4]@2 [e4,g4]@2 [e4,g4]@2 [b3,e4,g4,b4]@2, ~@2 b4@2 ~ [b3,b4]@2 ~", // G Em B
  I: "[c4,e4,a4,c5]@2 e4 [c4,e4,a4,c5] [c4,e4,a4,c5]@2 [c4,e4,a4,c5]@2 [a3,d4,gb4,d5]@4 [a3,d4,gb4,c5]@4", // Am D D7
  J: "[b3,d4,g4,b4]@2 b3 [b3,d4,g4,b4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [b3,d4,g4,b4]@2, ~@2 b4@2 ~ [b3,b4]@2 ~", // G G5 G B
  K: "[a3,c4,f4,a4]@13 ~@3", // F
})).s("gm_acoustic_guitar_steel").gain(0.17).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  [x ~@2 x!2 ~@2 x]!27
  [x!4 ~ x ~@2]
  [x ~@2 x!2 ~@2 x]!23
  [x!4 ~ x ~@2]
  [x ~@2 x!2 ~@2 x]!28
  x
>`).gain(0.62)

// drums · clap
const clap = s("cp").struct(`<
  A@3 B A@3 B A@3 B A@3 B A@3 B A@7 C A@3 B A@3 B A@7 B A@7 C A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@3 x",
})).gain(0.47)

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

// drums · hihat
const hihat = s("hh").struct(`<
  A B@3 A B@3 A B@3 A B@3 A B@3 A B@6 C A B@3 A B@3 A B@3 A B A B A B@6 C A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 ~
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~@4",
})).gain(0.47)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
>`.pickRestart({
  A: "x",
})).gain(0.39)

// drums · rim
const rim = s("rim").struct("<~@21 A ~ A@3 ~ B ~@17 A ~ A@3 ~ B ~@29>".pickRestart({
  A: "~@10 x!3 ~@3", B: "~@3 x",
})).gain(0.7)

stack(
  bass, piano, electric_guitar_clean, electric_guitar_clean_2, acoustic_guitar_steel, kick, clap, snare, hihat, crash,
  rim
)

More by Stevens Shakin