Strudelify

Murder On My Mind

Rickey C Battle jr

KeyE♭ majorTempo60 bpm
0:00/0:00
// Murder On My Mind — Rickey C Battle jr
// 60 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "B♭ Clarinet" clarinet (copy of ch 5 "B♭ Trumpet" trumpet); ch 6 "Horn in F" french horn (copy of ch 3 "Alto Saxophone" alto sax); ch 7 "Mellophone" french horn (copy of ch 3 "Alto Saxophone" alto sax)
// note: Transcription provider: pdmx. https://musescore.com/score/5709908; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 29 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · flute
const flute = note("<~@2 A B C D E F G ~@2 H G ~@3 I ~@6 J K D L M N>".pickRestart({
  A: "~@12 g5 ab5 bb5 c6", B: "ab5@3 bb5@4 ~", C: "ab5 g5 f5 eb5!2 f5 g5 eb5 f5@4 g5!4", D: "ab5 g5 f5 eb5 ~@6 g5!6",
  E: "~@4 [eb5,eb6] [f5,f6] [g5,g6] [eb5,eb6] [f5,f6]@2 ~@6", F: "ab5 g5 f5 eb5!2 f5 g5 ~@3 g5 [eb5,f5] f5@2 eb5@2",
  G: "[g5,c6,eb6,eb7] ~@3", H: "~@10 [c6,g6] [d6,eb6,f6] f6@2 eb6@2", I: "[eb5,g5,c6] ~@3", J: "~@12 g5!4",
  K: "ab5 g5 f5 eb5 ~@4 f5@4 ~@4", L: "~@4 eb5 f5 g5 eb5 f5@2 ~@2 g5!4",
  M: "ab5 g5 f5 eb5!2 f5 g5 ~@3 [c5,eb5] [eb5,g5] [g5,b5]@4", N: "[g5,c6,g6] ~@3",
})).s("gm_flute").gain(0.5)

// other · flute · soft notes
const flute_soft = note("<A B ~@17 C D E F G ~@5>".pickRestart({
  A: "~@12 bb5 ab5 g5 ab5", B: "[g5,g6]@6 [f5,f6]@6 [g5,g6] [f5,f6] [eb5,eb6] [d5,d6]", C: "~@12 g5!4",
  D: "ab5 g5 f5 eb5 ~@4 f5@4 ~@4", E: "ab5 g5 f5 eb5 ~@6 g5!6", F: "~@4 eb5 f5 g5 eb5 f5@2 ~@2 g5!4",
  G: "ab5 g5 f5 eb5!2 f5 g5 eb5 f5@2 ~@6",
})).s("gm_flute").gain(0.2)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@2 A B C D E F G ~@2 H G ~@3 I ~@7 J K L M N>".pickRestart({
  A: "~@12 g4 ab4 bb4 c5", B: "ab4@3 bb4@4 ~", C: "ab4 g4 f4 eb4!2 f4 g4 eb4 f4@4 g4!4", D: "ab4 g4 f4 eb4 ~@6 g4!6",
  E: "~@4 [eb4,eb5] [f4,f5] [g4,g5] [eb4,eb5] [f4,f5]@2 ~@6", // Eb F G Eb F
  F: "~@4 [eb4,eb5] [f4,f5] [g4,g5] [eb4,eb5] ~@2 eb5@2 d5@2 ~@2", G: "[c5,eb5] ~@3",
  H: "~@10 [c5,g5] [d5,eb5,f5] f5@2 eb5@2", I: "[c5,g5] ~@3", J: "ab4 g4 f4 eb4 ~@4 f5@4 g4!4",
  K: "ab4 g4 f4 eb4 ~@4 f5@2 g4!6", L: "ab4 ~ [f4,g4,f5] [eb4,eb5]!2 [f4,f5] [g4,g5] [eb4,eb5] [f4,f5]@2 ~@6",
  M: "~@4 [eb4,eb5] [f4,f5] [g4,g5] [eb4,eb5] f5@2 ~@2 [d5,g5]@4", N: "[c5,eb5,g5] ~@3",
})).s("gm_alto_sax").gain(0.5)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note(`<
  [~@12 bb4 ab4 g4 ab4]
  [g4@6 f4@6 g4 f4 eb4 d4]
  ~@18
  [ab4 g4 f4 eb4 ~@8 g4!4]
  [ab4 g4 f4 eb4 ~@6 g4!6]
  [~@4 eb4 f4 g4 eb4 f4@2 ~@6]
  [~@4 eb4 f4 g4 eb4 ~@8]
  ~@5
>`).s("gm_alto_sax").gain(0.2)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@2 A B C D E F G ~@2 H G ~@3 G ~@7 C D E I J>".pickRestart({
  A: "eb4@3 ~ g4@3 ~", B: "c4@3 ~ g4@2 ~@2", C: "ab4 g4 f4 eb4!2 f4 g4 eb4 f4@4 g4!4", D: "~@4 eb4 f4 g4 eb4 f4@2 ~@6",
  E: "ab4 ~ [f4,g4] eb4 ~@4 f4@2 ~@2 [g3,g4]!4", F: "ab4 g4 f4 eb4 ~@6 g4 [eb4,f4] f4@2 eb4@2", G: "[g4,c5] ~@3",
  H: "~@10 g4 [eb4,f4] f4@2 eb4@2", I: "ab4 g4 f4 eb4 ~@6 c4 eb4 g4@4", J: "[eb4,g4,c5] ~@3",
})).s("gm_tenor_sax").gain(0.5)

// other · tenor sax · "Tenor Saxophone" · soft notes · Fsus2
const tenor_sax_soft = note(`<
  ~
  [g4@6 f4@6 g4 f4 eb4 d4]
  ~@18
  [ab4 g4 f4 eb4!2 f4 g4 eb4 f4@4 g4!4]
  [~@4 eb4 f4 g4 eb4 f4@2 ~@6]
  [ab4 ~ [f4,g4] eb4 ~@4 f4@2 ~@2 g3!4]
  [ab3 g3 f3 eb3!2 f3 g3 eb3 f3@2 ~@6]
  ~@5
>`).s("gm_tenor_sax").gain(0.2)

// chords · trombone
const trombone = note("<~@2 A B C D A B E ~@3 F G H D I ~@7 C D A J E>".pickRestart({
  A: "[ab3,c4,eb4]@3 [f3,ab3,c4]@4 ~", B: "[f3,ab3,c4]@3 [g3,bb3,d4]@4 ~",
  C: "[ab3,c4,eb4]@3 [ab3,c4,eb4] ~@2 [f3,ab3,c4]@8 ~@2", D: "[f3,ab3,c4]@3 [f3,ab3,c4] ~@2 [g3,bb3,d4]@8 ~@2",
  E: "[g3,c4,eb4] ~@3", // Cm
  F: "[g3,c4,eb4]@2 [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~", // Cm
  G: "~@2 [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,c4,eb4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~", // Cm Gm Gm7
  H: "[ab3,c4,eb4]@3 [ab3,c4,eb4] ~ [ab3,c4,eb4] [f3,ab3,c4]@4 [f3,ab3,c4] ~ [f3,ab3,c4]!2 ~@2", I: "[ab3,c4,eb4] ~@3",
  J: "[f3,ab3,c4]@3 [g3,bb3,d4]@2 [ab3,c4,eb4] [g3,b3,d4]@2", // Fm Gm Ab G
})).s("gm_trombone").gain(0.5)

// chords · trombone · soft notes · Ab Fm Ab Fm Gm Ab Fm Gm
const trombone_soft = note(`<
  [[ab3,c4,eb4]@3 [f3,ab3,c4]@4 ~]
  ~@19
  [[ab3,c4,eb4]@3 [f3,ab3,c4]@4 ~]
  [[f3,ab3,c4]@3 [g3,bb3,d4]@4 ~]
  [[ab3,c4,eb4]@3 [f3,ab3,c4]@4 ~]
  [[f3,ab3,c4]@3 [g3,bb3,d4]@4 ~]
  ~@5
>`).s("gm_trombone").gain(0.2)

// other · french horn · "Baritone Horn"
const french_horn = note("<~@2 A B C D E F G ~@2 H G ~@3 G ~@7 I J E K L>".pickRestart({
  A: "eb4@3 ~ g4@3 ~", B: "c4@3 ~ g4@2 ~@2", C: "~@4 eb4 f4 g4 eb4 f4@4 g3!4", D: "~@4 eb4 f4 g4 eb4 f4@4 ~@4",
  E: "ab4 ~ [f4,g4] eb4 ~@4 f4@2 ~@2 [g3,g4]!4", F: "ab4 g4 f4 eb4 ~@6 g4 [eb4,f4] f4@2 eb4@2", G: "[g4,c5] ~@3",
  H: "~@10 g4 [eb4,f4] f4@2 eb4@2", I: "ab4 g4 f4 eb4 ~ f4 g4 eb4 f4@4 g4!4", J: "~@4 eb4 f4 g4 eb4 f4@2 ~@6",
  K: "ab4 g4 f4 eb4 ~@6 c4 eb4 g4@4", L: "[eb4,g4,c5] ~@3",
})).s("gm_french_horn").gain(0.5)

// other · french horn · "Baritone Horn" · soft notes · Fsus2
const french_horn_soft = note(`<
  ~
  [g4@6 f4@6 g4 f4 eb4 d4]
  ~@18
  [ab3 g3 f3 eb3!2 f3 g3 eb3 f3@4 g3!4]
  [~@4 eb3 f3 g3 eb3 f3@2 ~@6]
  [ab3 ~ [f3,g3] eb3 ~@4 f3@2 ~@2 g3!4]
  [ab3 g3 f3 eb3!2 f3 g3 eb3 f3@2 ~@6]
  ~@5
>`).s("gm_french_horn").gain(0.2)

// bass · tuba
const bass = note("<A B A C D E D E F G H G F G F I J G H K ~@3 L M N M O P>".pickRestart({
  A: "ab2@3 f2@4 ~", B: "c2@3 g2@4 ~", C: "c2@6 g2@6 g3 [eb3,f3] [ab2,bb2,c3,d3] g2",
  D: "ab2@2 ~ ab2@2 ~ f2@2 ~@2 f3@2 ~ f3@2 ~", E: "c3@2 ~ c3@2 ~ d3@2 ~@2 g2@2 ~ g2@2 ~",
  F: "ab2@2 ~ ab2 ~ g2 f2@2 ~ c3 f3@2 ~ f3@2 g2", G: "c3@2 ~ c3@2 c3 d3@2 ~ d2 g2@2 ~ g2 f2 g2",
  H: "ab2@2 ~ ab2 ~ g2 f2@2 ~ c3 f3@2 g3 f3 eb3 d3", I: "c3@2 ~ c3@2 c3 d3@2 ~ d2 g2@2 ~ g3 f3 g3",
  J: "ab3@2 ~ ab3 ~ g3 f3@2 ~ c3 f3@2 ~ f3@2 g2", K: "c3@2 ~ c3@2 c3 d3@2 ~@2 g3@2 g3@2 g3@2", L: "~@10 g3@2 ~ g3!3",
  M: "ab3@2 ~ ab3 ~ g3 f3@2 ~@2 f3@2 ~ f3 eb3 d3", N: "c3@2 ~ c3@2 f3 g3@2 ~@2 g3@2 ~ g3@2 ~",
  O: "[c3,c4]@2 ~ [c3,c4]@2 [c3,c4] [d3,d4]@2 ~@2 [d3,g3]@2 ~ [d3,g3]@2 ~", P: "[c3,g3,c4] ~@3",
})).s("gm_tuba").gain(0.5)

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

stack(
  flute, flute_soft, alto_sax, alto_sax_soft, tenor_sax, tenor_sax_soft, trombone, trombone_soft, french_horn,
  french_horn_soft, bass, kick
)

More by Rickey C Battle jr