Strudelify

Guitar Boogie Shuffle

The Ventures

KeyE majorTempo180 bpm
0:00/0:00
// Guitar Boogie Shuffle — The Ventures
// 180 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@16 A@4 B@2 A@2 C@2 A@6 B@2 A@2 C@2 A@6 B@2 A@2 C@3 A@5 B@2 A@2 C@2 A@6 B@2 A@2 C@2 A@6 B@2 A@2 C@2 A@6 B@2 A@2 C@2
  A@2 D@2 A D E@2 D@2 F@2 D G@2
>`.pickRestart({
  A: "[e2,b2,e3,g#3,b3,e4,g#4]@3 [e2,b2,e3,g#3,b3,e4,g#4] [e2,b2,e3,g#3,b3,e4,g#4]@3 [e2,b2,e3,g#3,b3,e4,g#4] [e2,b2,e3,g#3,b3,e4,g#4]@3 [e2,b2,e3,g#3,b3,e4,g#4] [e2,b2,e3,g#3,b3,e4,g#4]@3 [e2,b2,e3,g#3,b3,e4,g#4]", // E
  B: "[a2,e3,a3,c#4,e4,a4]@3 [a2,e3,a3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@3 [a2,e3,a3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@3 [a2,e3,a3,c#4,e4,a4] [a2,e3,a3,c#4,e4,a4]@3 [a2,e3,a3,c#4,e4,a4]", // A
  C: "[b2,d#3,a3,b3,d#4,f#4,a4]@3 [b2,d#3,a3,b3,d#4,f#4,a4] [a2,d#3,a3,b3,d#4,f#4,a4]@3 [a2,d#3,a3,b3,d#4,f#4,a4] [a2,d#3,a3,b3,d#4,f#4,a4]@3 [a2,d#3,a3,b3,d#4,f#4,a4] [a2,d#3,a3,b3,d#4,f#4,a4]@3 [a2,d#3,a3,b3,d#4,f#4,a4]", // B7
  D: "[e2,b2,e3,g#3,b3,e4,g#4]@3 e4 [e2,b2,e3,g#3,b3,e4,g#4]@3 e4 [e2,b2,e3,g#3,b3,e4,g#4]@3 e4 [e2,b2,e3,g#3,b3,e4,g#4]@3 e4", // E
  E: "[a2,e3,a3,c#4,e4,a4]@3 e4 [a2,e3,a3,c#4,e4,a4]@3 e4 [a2,e3,a3,c#4,e4,a4]@3 e4 [a2,e3,a3,c#4,e4,a4]@3 e4", // A
  F: "[b2,d#3,a3,b3,d#4,f#4,a4]@3 f#4 [b2,d#3,a3,b3,d#4,f#4,a4]@3 f#4 [b2,d#3,a3,b3,d#4,f#4,a4]@3 f#4 [b2,d#3,a3,b3,d#4,f#4,a4]@3 f#4", // B7
  G: "[[e2,b2,e3,g#3,b3,e4,g#4]@3 e4 [e2,b2,e3,g#3,b3,e4,g#4]@4 [e2,e3]@24]/2", // E
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.4)

// bass · electric bass finger
const bass = note(`<
  ~@4 A B A B C D A B E F A B A B A B E F A B E F A B A B A B C D A B E F A B A B A B C D A B E F E A B A B A C D B A E
  F A B A B A B C D A B E F A B A B A B C D A B E F A B A B A B A B A B E F A B A B A B C D A B E F A G@2
>`.pickRestart({
  A: "e1@3 e2 f1@3 f2 g1@3 g2 a1@3 a2", B: "b1@3 b2 a1@3 a2 g1@3 g2 f1@3 f2", C: "a1@3 a2 b1@3 b2 c2@3 c3 d2@3 d3",
  D: "e2@3 e3 d2@3 d3 c2@3 c3 b1@3 b2", E: "b1@3 b2 c2@3 c3 d2@3 d3 e2@3 e3", F: "f2@3 f3 e2@3 e3 d2@3 d3 c2@3 c3",
  G: "[b1@3 b2 e1@4 e1@24]/2",
})).s("gm_electric_bass_finger").gain(0.4).pan(0.3)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@4 A B A B C D A B E F G B A B A B E F A B E F A B A B A B C D A B E F A B A B A B C D A B E F E A B A B A C D B A E
  F A B A B A B C D A B E F A B A B A B C D A B E F A B A B A B A B A B E F A B A B A B C D A B E F A H@2
>`.pickRestart({
  A: "e2@3 ~ f2@3 ~ g2@3 ~ a2@3 ~", B: "b2@3 ~ a2@3 ~ g2@3 ~ f2@3 ~", C: "a2@3 ~ b2@3 ~ c3@3 ~ d3@3 ~",
  D: "e3@3 ~ d3@3 ~ c3@3 ~ b2@3 ~", E: "b2@3 ~ c3@3 ~ d3@3 ~ e3@3 ~", F: "f3@3 ~ e3@3 ~ d3@3 ~ c3@3 ~",
  G: "e2@3 ~ f2@3 ~ g2@3 ~ a2@3 a3", H: "[b2@3 ~ e2@4 e2@24]/2",
})).s("gm_electric_guitar_muted").gain(0.39).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@17 B A@3 B A@11 C A@7 D A@3 C A@7 D A@3 E A@7 D A@3 B A@11 B A@25 D B
>`.pickRestart({
  A: "x!2", B: "x", C: "x ~@14 x", D: "x ~@7 x ~@6 x", E: "x ~@6 x ~@8",
})).gain(0.35).pan(0.7)

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

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@4 A@9 B A@7 ~ A@3 ~ A@7 B A@3 ~ A@11 ~ A@11 ~ A@11 ~ A@11 ~ A@7 B A@7 B A@5 B A@3 B ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.31).pan(0.7)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@9 B ~@7 C ~@11 A ~@3 D ~@11 D ~@11 E ~@11 C ~@11 C ~@7 A ~@7 A ~@5 A ~@5
>`.pickRestart({
  A: "~@13 x ~ x", B: "~@3 x", C: "~@4 x ~@8 x ~ x", D: "~ x ~@2", E: "~@3 x!2 ~@3 x ~@3 x ~@2 x",
})).gain(0.35).pan(0.7)

// drums · open hat
const open_hat = s("oh").struct("<~@34 x ~@78>").gain(0.26).pan(0.7)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@9 A ~@7 A ~@3 A ~@7 A ~@3 A ~@11 A ~@11 A ~@11 A ~@10 A@2 ~@7 A ~@7 A ~@5 A ~@3 A
>`.pickRestart({
  A: "x",
})).gain(0.35).pan(0.7)

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

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@5 A@3 B@2 ~@2 B C ~@2 A D ~@6 A ~ A@4 ~@2 A ~@2 A@2 ~ D B A@2 ~ B ~@4 A ~ A ~ D ~@3 B A@2 D ~@3 A ~@2 D ~@2 A ~@5 D
  A ~@5 D@2 ~@3 A ~@2 A B ~@3 A ~@2 A B ~@3 B A B ~@3 B D ~@2
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@7 x ~@7 x", C: "~ x", D: "~@15 x",
})).gain(0.18).pan(0.7)

stack(
  acoustic_guitar_steel, bass, electric_guitar_muted, kick, snare, pedal_hat, mid_tom, open_hat, crash, ride, ride_soft
)

More by The Ventures