Strudelify
Lawyers, Guns and Money cover art

1978 · Excitable Boy

Lawyers, Guns and Money

Warren Zevon

KeyB♭ majorTempo95 bpm
0:00/0:00
// Lawyers, Guns and Money — Warren Zevon
// 95.2 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
// note: The whole transcription plays 33 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(95.2/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "LawyrsGuns&$$"
const bass = note(`<
  ~ A B A C A D E F E G E F H A I J K L F E G E F H A I J K M N M N M O A I J K A I P Q A I P Q A I P Q A I P Q A I P Q
  R@2 ~
>`.pickRestart({
  A: "bb1@7 ~ [bb1,bb2]@7 ~", B: "bb1@7 ~ f1 ~ f1 ~ f1 f1@2 ~", C: "bb1@6 ~@2 f2 d2@3 c2 a1 f1@2",
  D: "bb1@7 ~ f2 d2 c2 a1 f1@3 ~", E: "eb2@8 bb1@7 ~", F: "f1@3 ~@4 f1!2 ~ f1@2 ~@4",
  G: "eb2@2 ~ eb2@3 d2@2 bb1 ~ bb1@5 ~", H: "eb2@6 d2@2 bb1 ~@7", I: "bb1@6 ~@2 f2 ~ f2 ~ f2 f2@2 ~",
  J: "bb1@7 ~ bb1@7 ~", K: "bb1@7 ~ f2!2 ~ f2@4 ~", L: "eb2@7 ~ bb1@7 ~", M: "eb2@7 ~ f2@7 ~",
  N: "bb1@7 ~ bb1@3 ~ f1@3 ~", O: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", P: "eb2 ~@3 bb1 ~@3", Q: "f1 ~@7",
  R: "bb1/2",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · piano
const piano = note(`<
  ~ A B A C A D E F G H E F I A B A D E F G H E F I A B A D J K J K J L A B A D A B M N A B M N A B M N A B M N A B M N
  O@2 ~
>`.pickRestart({
  A: "[bb2,eb3,g3,bb3]@7 ~ [bb2,eb3,g3,bb3]@7 ~", B: "[bb2,eb3,g3,bb3]@5 ~ [bb2,eb3,g3,bb3] ~ [f2,f3,a3,c4]@7 ~",
  C: "[bb2,eb3,g3,bb3]@6 [bb2,eb3,g3,bb3] ~ [f2,f3,a3,c4]@7 ~", // Eb F
  D: "[bb2,eb3,g3,bb3]@5 ~ [bb2,eb3,g3,bb3] ~ [f2,f3,a3,c4]@6 ~@2", E: "[eb3,g3,bb3]@7 ~ [bb2,d3,f3]@5 ~ [bb2,d3,f3] ~",
  F: "[f2,a2,c3]@4 ~@2 [f2,a2,c3]@2 ~ [f3,a3,c4] ~@2 [f2,a2,c3]@2 [f3,a3,c4] ~", G: "[eb3,g3,bb3]@7 ~ [bb2,d3,f3]@7 ~",
  H: "[eb3,g3,bb3]@2 ~ [eb3,g3,bb3]@2 ~ [d3,f3,bb3] ~ [bb2,d3,f3]@7 ~", I: "[eb3,g3,bb3]@7 ~ [bb2,d3,f3]@6 ~@2",
  J: "[eb3,g3,bb3]@7 ~ [f3,a3,c4]@7 ~", K: "[d3,f3,bb3]@7 ~ [d3,f3,bb3]@3 ~ [f3,a3,c4]@3 ~",
  L: "[bb2,d3,f3] ~ [bb2,d3,f3] ~ [bb2,d3,f3] ~ [bb2,d3,f3] ~ [bb2,d3,f3] ~ [bb2,d3,f3] ~ [bb2,d3,f3] ~ [bb2,d3,f3] ~", // Bb
  M: "[eb3,g3,bb3] ~@3 [bb2,d3,f3] ~@3", N: "[f2,a2,c3] ~@7", O: "[bb2,d3,f3]/2",
})).s("gm_piano").gain(0.45)

// chords · piano
const piano_2 = note(`<
  ~ A B C D C B E F E G E F ~ A B C B E F E G E F E A B C B H I H I H J A B C B A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@5
>`.pickRestart({
  A: "[eb3,g3]@2 ~ [eb3,g3]@3 [d3,f3] ~ [eb3,g3] ~ [eb3,g3] ~ [eb3,g3] [d3,f3]@2 ~", // Eb Dm Eb Dm
  B: "[eb3,g3]@2 ~ [eb3,g3]@3 [d3,f3] ~ [f3,a3]@7 ~", // Eb Dm F
  C: "[eb3,g3]@2 ~ [eb3,g3]@3 f3@2 [eb3,g3] ~ [eb3,g3] ~ [eb3,g3] [d3,f3]@3, ~@6 d3 ~@9", // Eb Dm
  D: "[eb3,g3]@2 ~ [eb3,g3]@3 f3@2 [f3,a3]@7 ~, ~@6 d3 ~@9", E: "~@14 bb2 ~", F: "~@8 [a2,c3,f3] ~ [a2,c3,f3] ~@5",
  G: "~@10 [bb2,d3,f3]@4 [bb2,d3,f3] ~", H: "eb2@7 ~ f2@7 ~", I: "bb1@7 ~ bb1@3 ~ f1@3 ~",
  J: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
})).s("gm_piano").gain(0.45)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~ A B A B A B ~@3 C ~@3 A B A B ~@3 C ~@3 A B A B ~ D ~ E ~ F A B A B A B G H A B G H A B I J A B K L A B M N O@2 ~
>`.pickRestart({
  A: "[eb3,g3,bb3]@2 ~ [eb3,g3,bb3]!2 ~ [d3,f3,bb3] ~ [eb3,g3,bb3] ~ [eb3,g3,bb3] ~ [eb3,g3,bb3] [d3,f3,bb3]@2 ~", // Eb Bb Eb Bb
  B: "[eb3,g3,bb3]@2 ~ [eb3,g3,bb3]!2 ~ [d3,f3,bb3] ~ [f3,a3,c4]@7 ~", // Eb Bb F
  C: "[eb3,g3,bb3]@2 ~ [eb3,g3,bb3]@2 ~ [d3,f3,a3] ~ [bb2,d3,f3]@6 ~@2", D: "~@8 [bb2,d3,f3]@3 ~ [a2,c3,f3]@3 ~",
  E: "~@8 [bb2,d3,f3]@3 ~ [f3,a3,c4]@3 ~", F: "bb2@2 bb2@2 bb2@2 bb2 ~ bb2@2 bb2@2 bb2@2 bb2 ~", G: "eb3@2 ~@6 bb2 ~@7",
  H: "f2@15 ~", I: "eb3 f3@2 bb3@3 f3@2 db3 d3@2 bb3@3 d3@2", J: "f2!16",
  K: "~ f3@2 bb3@3 f3@2 db3 d3@2 bb3@3 d3@2, eb3 bb2", L: "f2!5 ~ ab2 g2 f2@2 f2!6, ~@5 f2@3 ~@8",
  M: "~ [f2,f3]@2 [bb2,bb3]@3 [f2,f3]@2 [db2,bb2,db3] [d2,d3]@2 [bb2,bb3]@3 [d2,d3]@2, [eb2,eb3] ~@7", N: "f2!14 f2@2",
  O: "bb2/2",
})).s("gm_distortion_guitar").gain(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A B C B C D ~ E F G ~ E H A B C D ~ E F G ~ E I J K L M N O N O N P Q R Q@2 S@2 ~ T S@2 ~ T S@2 U T S@2 ~ T S@2 ~ T
  ~@3
>`.pickRestart({
  A: "[eb3,g3,bb3]@2 ~ [eb3,bb3] [eb3,bb3]@2 [d3,f3,bb3]@2 [eb3,g3,bb3] ~ [eb3,g3,bb3] ~ [eb3,g3,bb3] [d3,f3,bb3]@3, ~@3 g3@3 ~@10", // Eb Eb5 Bb Eb Bb
  B: "[eb3,g3,bb3]@2 ~ [eb3,g3,bb3] [eb3,g3,bb3]@2 [d3,f3,bb3]@2 [f3,a3,c4]@7 ~", // Eb Bb F
  C: "[eb3,g3,bb3]@2 ~ [eb3,g3,bb3] [eb3,g3,bb3]@2 [d3,f3,bb3]@2 [eb3,g3,bb3] ~ [eb3,g3,bb3] ~ [eb3,g3,bb3] [d3,f3,bb3]@3", // Eb Bb Eb Bb
  D: "[eb3,g3,bb3]@2 ~ [eb3,g3,bb3] [eb3,g3,bb3]@2 [d3,f3,bb3]@2 [f3,a3,c4]@6 ~@2", // Eb Bb F
  E: "[f3,f4,a4,c5]@2 ~ f3 [f4,a4,c5] ~ f3 f3@2 [f4,a4,c5] f3 ~ [f3,f4,a4,c5] ~@3", F: "~@4 [bb2,d3,f3]@3 ~",
  G: "[eb3,g3,bb3]@2 ~ [eb3,g3,bb3]@2 ~ [d3,f3,bb3] ~ [bb2,d3,f3]@6 ~@2", // Eb Bb
  H: "[bb3,eb4,g4] ~ [eb4,g4] [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,d4,f4] ~@3 bb4 ~@3", // Eb Bb
  I: "[bb3,eb4,g4] ~ [eb4,g4] [bb3,eb4,g4] ~ [bb3,eb4,g4]!2 ~ [bb3,d4,f4] ~@3 bb4 ~ bb3 [d4,f4,bb4]", // Eb Bb
  J: "[eb4,g4,bb4] [d4,f4,bb4] bb3 [eb3,bb3] [eb3,bb3]@2 ~ [d4,f4,bb4] [eb3,g3,bb3,eb4,g4,bb4] [d4,f4,bb4] [eb3,g3] ~ [eb3,g3,bb3] [d3,f3,bb3]@2 [d4,f4,bb4], [eb3,g3,bb3]@2 [d4,bb4]@5 ~@3 [d4,bb4]@5 ~, ~@3 g3@3 [d3,f3,bb3]@2 ~@2 bb3@2 ~@4", // Eb Bb Eb5 Bb Eb Bb Eb Bb …
  K: "[eb4,g4,bb4] [d4,f4,bb4] [eb4,g4,bb4] [eb3,g3,bb3,d4,f4,bb4] [eb3,g3,bb3,eb4,g4,bb4] [d4,f4,bb4] [d3,f3,bb3]@2 [f3,a3,c4]@7 [d4,f4,bb4], [eb3,g3,bb3]@3 ~@3 [f4,a4,c5]@8 ~@2", // Eb Bb Eb Ebmaj7 Eb Bb F Bb …
  L: "~ [d4,f4,bb4] bb3 [eb3,g3,bb3] [eb3,g3,bb3]@2 ~ [d4,f4,bb4] [eb3,g3,bb3,eb4,g4,bb4] [d4,f4,bb4] [eb3,g3] ~ [eb3,g3,bb3] [d3,f3,bb3]@2 [d4,f4,bb4], [eb3,g3,bb3,eb4,g4,bb4]@2 [d4,bb4]@4 [d3,f3,bb3]@2 ~@2 [d4,bb4]@5 ~, ~@5 bb3 ~@2", // Bb Eb Bb Eb Bb Eb Bb Eb …
  M: "[eb4,g4,bb4] [d4,f4,bb4] [eb4,g4,bb4] [eb3,g3,bb3,d4,f4,bb4] [eb3,g3,bb3,eb4,g4,bb4] [d4,f4,bb4] [d3,f3,bb3]@2 [f3,a3,c4]@6 ~@2, [eb3,g3,bb3]@3 ~@3 [f4,a4,c5]@8 ~@2", // Eb Bb Eb Ebmaj7 Eb Bb F Eb …
  N: "[eb3,g3,bb3] [c3,eb3,g3] [eb3,g3,bb3] [g3,bb3,d4] [f3,a3,c4] [c3,f3,a3] [f3,a3,c4] [a3,c4,eb4]", // Eb Cm Eb Gm F Adim
  O: "[f3,bb3,d4] [d3,f3,bb3] [f3,bb3,d4] [bb3,d4,f4] [f3,bb3,d4,bb4]@2 [d3,a3,c4,a4]@2", // Bb D7
  P: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~", Q: "[db4,e4,a4] [d4,f4,bb4]!7 [db4,e4,a4] [d4,f4,bb4]!7",
  R: "[db4,e4,a4] [d4,f4,bb4]!7 [db4,e4,a4] [d4,f4,bb4]!4 [f4,bb4] [d4,f4,bb4]!2", // A Bb A Bb Bb5 Bb
  S: "[db4,e4,a4] [d4,f4,bb4]!3 [db4,e4,a4] [d4,f4,bb4]!3 [db4,e4,a4] [d4,f4,bb4]!3 [db4,e4,a4] [d4,f4,bb4]!3", // A Bb A Bb A Bb A Bb
  T: "~@8 [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] [a3,c4,f4] [a3,c4,f4]@2", U: "eb4 f4@2 bb4@3 f4@2 db4 d4@2 bb4@3 d4 ~",
})).s("gm_electric_guitar_clean").gain(0.4)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@7 A B C D A B E ~@4 A B C D A B E ~@16 F G ~@2 F G ~@2 F G ~@2 F G ~@2 F G ~@3
>`.pickRestart({
  A: "bb3!2 ~ bb3!13", B: "f3!4 ~ f3!3 ~ f3 ~ f3!4 ~", C: "bb3!2 ~ bb3!3 ~ bb3!3 ~ bb3!5", D: "bb3!2 ~ bb3 ~ bb3!10 ~",
  E: "bb3 ~ bb3!2 ~ bb3!4 ~@7", F: "eb3!8 bb2!8", G: "f2!16",
})).s("gm_electric_guitar_muted").gain(0.4)

// other · electric guitar muted · soft notes
const electric_guitar_muted_2 = note("<~@7 A B C ~ A B D ~@4 A B C ~ A B D ~@37>".pickRestart({
  A: "~@2 bb3 ~@13", B: "~@8 f3 ~ f3 ~@5", C: "~@2 bb3 ~@3 bb3 ~@3 bb3 ~@5", D: "~ bb3 ~@2 bb3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.25)

// other · orchestra hit
const orchestra_hit = note("<~@24 [~@6 bb4 ~] ~@37>").s("gm_orchestra_hit").gain(0.5)

// other · overdriven guitar
const overdriven_guitar = note("<~@35 A B@3 ~@20 C@3>".pickRestart({
  A: "~@4 a5 ~@7 a5 ~@3", B: "~@4 a5@2 ~@6 a5 ~@3", C: "[[bb2,f3]@11 ~@5]/3",
})).s("gm_overdriven_guitar").gain(0.4)

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

// drums · rim
const rim = s("rim").struct("<[~ x ~ x] ~@61>").gain(0.48)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@30 A ~ B ~ C ~@5 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@4>".pickRestart({
  A: "~@7 x!2 ~@7", B: "~@6 x!3 ~@7", C: "~@7 x", D: "~@14 x!2", E: "~@6 x!2 ~@6 x!2",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~@43 [~ x ~ x]!2 ~@2 [~ x ~ x]!2 ~@2 [~ x ~ x]!2 ~@9>").gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@42 A ~@3 B ~@3 A ~@3 B ~@3 A ~@2 C>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@13 x!2 ~", C: "x",
})).gain(0.64)

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~ A ~@8 B ~ A ~@8 B ~ A ~@7 C ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5
>`.pickRestart({
  A: "~@7 x", B: "~ x", C: "x!3 ~",
})).gain(0.72)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@8 A ~@3 A ~@6 A ~@3 A ~@38>".pickRestart({
  A: "~@7 x",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@34 A ~@7 B ~@3 C ~@3 B ~@3 C ~@3 B ~@3>".pickRestart({
  A: "~@11 x ~@4", B: "~ x ~@6", C: "~ x ~@6 x ~@7",
})).gain(0.72)

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

// drums · ride
const ride = s("rd").struct("<~@14 A@4 ~@7 A@4 ~@6 A@6 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@5>".pickRestart({
  A: "x!4",
})).gain(0.72)

stack(
  bass, piano, piano_2, distortion_guitar, electric_guitar_clean, electric_guitar_muted, electric_guitar_muted_2,
  orchestra_hit, overdriven_guitar, kick, rim, snare, snare_soft, clap, low_tom, hihat, mid_tom, open_hat,
  open_hat_soft, high_tom, crash, ride
)

More by Warren Zevon