Strudelify

Quartermaster Stores

The Shadows

KeyA majorTempo157 bpm
0:00/0:00
// Quartermaster Stores — The Shadows
// 157 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 4 "#Pdl.Stee" electric guitar jazz (copy of ch 1 "Jazz Gtr." electric guitar jazz); ch 6 "#Mtd.Dist" electric guitar muted (copy of ch 3 "#Mtd.Gtr." electric guitar muted)
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(157/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.

// bass · acoustic bass · "Ac.Bass"
const bass = note(`<
  A@4 B@3 C D B@2 C E B@2 C D B@2 F E B G H I J F K L B@4 M B@2 D B@2 C E B@4 N O P Q R B@2 S T U@2 B@3 C D B@2 C E B@2
  C D B@2 C E B G V I J F K W B@2 C D B@2 C E B
>`.pickRestart({
  A: "a1 ~@3 a1 ~@3", B: "a1!2 c#2 a1 e2!2 f#2 e2", C: "a1!2 c#2 a1 e2!3 f#2", D: "e2!2 g#2!2 b2!2 c#3 b2",
  E: "e2!2 d2!2 c#2!2 b1!2", F: "a1!2 c#2 a1 d#2 e2!2 f#2", G: "a1@2 a1@2 c#2@2 a1@2 e2@3 ~ f#2@3 ~",
  H: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", I: "b2!2 a2!2 g#2!2 b1 c#2", J: "e2!2 g2 g#2 b2!2 c#3 b2",
  K: "d2!2 f#2!2 a2!2 b2!2", L: "a1!2 g#2 a2 b2!2 c#3!2", M: "a1 ~@7", N: "a1 g2!2 e2 g2 e2 c#2@2", O: "a1@15 ~",
  P: "a1 ~ c3@2 b2@2 a2@2 b2@2 a2@2 f#2@4", Q: "d2@15 ~", R: "d2 ~ g2@2 f#2@2 e2@2 g2@2 e2@2 c#2@4", S: "e2!2 ~@6",
  T: "d2!2 ~@6", U: "a1!2 ~@6", V: "d2!2 f#2!2 a2!2 f#2!2", W: "a1!2 g#2 a2 b2!2 c#3 b2",
})).s("gm_acoustic_bass").gain(0.35)

// chords · electric guitar muted · "#Mtd.Gtr."
const electric_guitar_muted = note(`<
  A B C@2 D@4 E F D@2 E D@3 E F D@2 E G@2 H I J K H L M D@3 N M@2 E F M@2 E F O@3 N P N Q R D@2 S T U@2 D@4 E F D@2 E D
  M@2 E F M@2 E F G H I J K H L M D@2 E F D@2 E D
>`.pickRestart({
  A: "[a2,e3,a3]@3 ~@5 [a2,e3,a3]@3 ~@5", B: "[a2,e3,a3]@3 ~@5 [a2,e3,a3,c#4]@3 ~@5",
  C: "[a2,e3,a3,c#4]@3 ~@5 [a2,e3,a3,c#4]@4 ~@4", // A
  D: "[a2,e3,a3]@2 a2!2 [c#3,a3]@2 [a2,e3]@2 [e3,a3]@2 [e3,a3]@2 [f#3,a3]@2 [e3,a3]@2", // A5 F#m A5 F#m A5
  E: "[b2,e3,g#3]@2 [b2,e3,g#3]@2 [c#3,e3,g#3] ~ [c#3,e3]@2 [b2,e3,g#3]@2 [b2,e3,g#3]@2 [c#3,e3,g#3] ~ [c#3,e3]@2", // E C#m E C#m
  F: "[a2,e3,a3]@2 [a2,e3,a3]@2 [c#3,e3,a3] ~ a2@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,f#3,a3] ~ [a2,e3]@2", // A5 A A5 D A5
  G: "[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,f#3,a3] ~ [f#3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,f#3,a3] ~ [f#3,a3]@2", // A5 D F#m A5 D F#m
  H: "[d3,a3,d4]@2 [d3,a3,d4]@2 [d3,b3,d4] ~ [d3,b3]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,b3,d4] ~ [d3,a3]@2", // D5 G D5 G D5
  I: "[b2,d#3,a3]@2 [b2,d#3,a3]@2 [b2,d#3,a3] ~ [b2,d#3]@2 [b2,d#3,a3]@2 [b2,d#3,a3]@2 [b2,d#3,a3] ~ [b2,d#3]@2", // B7 B B7 B
  J: "[e2,b2,e3]@2 [e2,b2,e3]@2 [e2,c#3,e3] ~ [e2,b2]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,c#3,e3] ~ [e2,b2]@2", // E5 C#m E5 C#m E5
  K: "[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,f#3,a3] ~ [e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,f#3,a3] ~ [e3,a3]@2", // A5 D A5 D A5
  L: "[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,f#3,a3] ~ [e3,a3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,c#3,e3] ~ [b2,e3]@2", // A5 D A5 E5 C#m E5
  M: "[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,f#3,a3] ~ [a2,f#3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,f#3,a3] ~ [a2,e3]@2", // A5 D A5 D A5
  N: "[a2,e3,a3] ~@15", O: "[a2,e3,a3]@2 a2!2 [c#3,a3]@2 [a2,e3]@2 [e3,a3]@2 [e3,a3]@2 [f#3,b3]@2 [e3,a3]@2",
  P: "[a2,e3,a3]@2 a2!2 [f#3,a3]@2 [a2,e3]@2 [e3,a3]@2 [e3,a3]@2 [f#3,a3]@2 [e3,a3]@2", // A5 F#m A5 F#m A5
  Q: "[d3,a3,d4]@2 d3!2 [f#3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,b3,d4] ~ [d3,a3,d4]@2", // D5 D D5 G D5
  R: "[d3,a3,d4] ~@15", S: "[e3,g#3,d4,e4]@2 [e3,g#3,d4,e4] ~@13", T: "[d3,f#3,c4,d4]@2 [d3,f#3,c4,d4] ~@13",
  U: "[a2,e3,a3]@2 [a2,e3,a3] ~@13", // A5
})).s("gm_electric_guitar_muted").gain(0.34).pan(0.7)

// chords · electric guitar muted · "#Mtd.Gtr." · soft notes
const electric_guitar_muted_2 = note(`<
  A B ~@6 C D ~@2 C ~@3 C D ~@2 C E@2 F G H E F I G ~@4 G@2 C D G@2 C D ~@18 C D ~@2 C ~ G@2 C D G@2 C D E F G H E F I G
  ~@2 C D ~@2 C ~
>`.pickRestart({
  A: "c#4@3 ~@5 c#4@3 ~@5", B: "c#4@3 ~@13", C: "~@3 g#3 ~@3 g#3", D: "~@3 [e3,a3] ~@3 a3", E: "~@3 a2 ~@3 a2",
  F: "~@3 d4 ~@3 d4", G: "~@3 a3 ~@3 a3", H: "~@3 e3 ~@3 e3", I: "~@3 a2 ~@3 e2",
})).s("gm_electric_guitar_muted").gain(0.19).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@4 A@29 B A@11 B ~@10 A@21 C A@12>".pickRestart({
  A: "x!2 ~ x!2 ~@3", B: "x", C: "x!4",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  A@2 B C D@9 E D@7 E D@3 F D@7 G D@11 H I J I J B I K L K M D@9 F D@7 E D@3 N D@3 E D@7 E
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~ x ~ x ~ x ~ x ~ x ~", C: "x ~@2 x!2 ~ x ~ x ~ x!3 ~ x ~", D: "~ x ~ x", E: "~@2 x ~@2 x!3",
  F: "~ x!7", G: "x ~@2 x", H: "x!2 ~@6", I: "x ~@2 x!2 ~ x ~ x ~ x ~ x ~@3", J: "x",
  K: "x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~ x ~", L: "~ x ~ x ~ x ~ x ~@3 x ~@3 x", M: "x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~ x!2",
  N: "~ x ~ x ~ x ~ x",
})).gain(0.56)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@2 A B ~@7 C ~@7 C ~@3 C ~@8 D ~@11 D ~ A ~ A ~ A@2 E F E G ~@7 C ~@7 C ~@15 C ~@2
>`.pickRestart({
  A: "~ x ~@6", B: "~@2 x ~@6 x ~@6", C: "~@6 x!2 ~@8", D: "~@14 x!2", E: "~ x ~@3 x ~@2", F: "~@2 x ~@5 x!2 ~@3 x!2 ~",
  G: "~@2 x!2 ~ x ~ x ~ x!2 ~@2 x ~@2",
})).gain(0.24)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@2 A@2 ~@42 A ~ A ~ A@3 ~ A@2 ~@34>".pickRestart({
  A: "~ x ~ x",
})).gain(0.56)

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

// drums · ride
const ride = s("rd").struct("<~@4 [x!8]!29 ~ [x!8]!11 ~@11 [x!8]!34>").gain(0.64)

stack(bass, electric_guitar_muted, electric_guitar_muted_2, kick, snare, snare_soft, pedal_hat, mid_tom, ride)

More by The Shadows