Strudelify

Escape

The Ventures

KeyB♭ majorTempo144 bpm
0:00/0:00
// Escape — The Ventures
// 144 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(144/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.

// other · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@5 A B C B D E F G H I J K L E F G H M N O ~@4 A B P E F G H I J K L E F G H M N O ~@2 Q R@2 S T U@2 V W X Y Z AA AB
  AC AD AE X Y Z AA AF AG N ~@2 AH AI AJ AI AK AL AJ AM ~
>`.pickRestart({
  A: "~@5 c4@2 bb3", B: "g3 ~ [bb3,d4,g4] ~@2 [bb3,d4,g4] d3 g2", C: "g2 ~ [bb3,d4,g4] ~@2 c4@2 bb3",
  D: "g2 ~ [bb3,d4,g4] ~@2 [bb3,d4,g4]@2 ~", E: "g3@3 f3 g3@3 f3", F: "g3 a3 bb3 a3 g3@3 f3",
  G: "g3 a3 bb3 c4 bb3 a3 g3 f3", H: "g3 ~", I: "c4@3 bb3 c4@3 bb3", J: "c4 d4 eb4 d4 c4@3 bb3",
  K: "c4 d4 eb4 f4 eb4 d4 c4 bb3", L: "c4@2 c4 ~ c4@2 bb3 ~", M: "[a3,d4,gb4]", N: "[bb3,eb4,g4]", O: "[c4,f4,a4]",
  P: "g2 ~ [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2", Q: "~@5 g2 bb2 b2", R: "c3@2 c3 bb2 c3 db3 c3 ~",
  S: "f4 ab4 bb4 c5 bb4 ab4 f4 eb4", T: "f4 ~", U: "d3@2 d3 c3 d3 eb3 d3 c3", V: "[db3,ab3,db4]!8",
  W: "[c3,g3,c4]!6 eb3 e3", X: "f3@3 eb3 f3@3 eb3", Y: "f3 g3 ab3 g3 f3@3 eb3", Z: "f3 g3 ab3 bb3 ab3 g3 f3 eb3",
  AA: "f3 ~", AB: "bb3@3 ab3 bb3@3 ab3", AC: "bb3 c4 db4 c4 bb3@3 ab3", AD: "bb3 c4 db4 eb4 db4 c4 bb3 ab3",
  AE: "bb3@2 bb3 ~ bb3@2 ab3 ~", AF: "[g3,c4,e4]", AG: "[ab3,db4,f4]", AH: "~@5 bb3@2 ab3",
  AI: "f3 ~ [ab3,c4,f4] ~@2 [ab3,c4,f4] c3 f2", AJ: "f2 ~ [ab3,c4,f4] ~@2 bb3@2 ab3",
  AK: "f2 ~ [ab3,c4,f4] ~@2 bb4@2 ab4", AL: "f4 ~ [ab3,c4,f4] ~@2 [ab3,c4,f4] c3 f2",
  AM: "f3 ~ [ab3,c4,f4] ~@2 [ab3,c4,f4] ~@2", // Fm
})).s("gm_electric_guitar_clean").gain(0.48)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@2 A@12 B@4 A@4 C D E@2 A@10 B@4 A@4 C D E@2 ~@2 F@2 G H I@2 J K L@4 M@4 L@4 K J D@2 L@9 ~
>`.pickRestart({
  A: "g1@2 bb1@2 c2 d2 c2 bb1", B: "c2@2 eb2@2 f2 g2 f2 eb2", C: "d2!8", D: "eb2!8", E: "f2!8",
  F: "c2@2 c2 bb1 c2 db2 c2 bb1", G: "f2@2 ab2@2 bb2 b2 bb2 ab2", H: "f2@2 f2 eb2 f2 gb2 f2 eb2",
  I: "d2@2 d2 c2 d2 eb2 d2 c2", J: "db2!8", K: "c2!8", L: "f2@2 ab2@2 bb2 c3 bb2 ab2", M: "bb1@2 db2@2 eb2 f2 eb2 db2",
})).s("gm_electric_bass_pick").gain(0.32).pan(0.6)

// chords · electric guitar muted · "Rhythm"
const electric_guitar_muted = note("<~@13 A ~@3 B ~@17 A ~@3 B ~@21 A ~@3 B ~@18>".pickRestart({
  A: "~@8 [c4,g4]!2 [bb3,f4]!2 [a3,e4] [g3,d4] [f3,c4]!2", B: "~@8 [c3,g3]!2 [b2,gb3]!2 [bb2,f3]!2 [a2,d3]!2",
})).s("gm_electric_guitar_muted").gain(0.46).pan(0)

// chords · rock organ · "Organ"
const rock_organ = note("<~@24 A@3 B@3 ~@16 A@3 C D@2 E@2 F@2 G H I@4 J@4 I@4 ~ K L@3 M@8 ~>".pickRestart({
  A: "[[f4,a4,c5]@31 ~ [g4,bb4]@5 [d4,g4,bb4]@5 ~ [g4,bb4]@5, ~@31 d4@6 ~@5 d4@6]/3", // F Gm
  B: "[~@4 [g4,bb4]@3 ~ [g4,bb4]@7 ~ [g4,bb4]@5 ~ bb4@4 ~ [g4,bb4]@7 ~@2 [g4,bb4]@3 ~ [g4,bb4]@8, ~@3 d4@4 d4@8 d4@5 ~ [d4,g4]@5 d4@7 ~@2 d4@4 d4@9]/3", // Gm G5
  C: "~@4 [g4,bb4]@3 ~ [g4,bb4]@8, ~@3 d4@4 d4@8 ~", D: "[g4, c4@7 ~]/2", E: "[[f4,c5]@7 ~]/2", F: "[d5,a5]/2",
  G: "[db5,ab5]", H: "[c5,g5]", I: "[f4,ab4,c5]/4", J: "[bb4,db5,f5]/4", K: "[db4,f4,ab4]",
  L: "[[eb4,g4,bb4]@31 ~ [f4,ab4]@5 [c4,f4,ab4]@5 ~ [f4,ab4]@5, ~@31 c4@6 ~@5 c4@6]/3", // Eb Fm
  M: "[~@4 [f4,ab4]@3 ~ [f4,ab4]@7 ~ [f4,ab4]@5 ~ ab4@4 ~ [f4,ab4]@7 ~@2 [f4,ab4]@3 ~ [f4,ab4]@7 ~ [f4,ab4]@5 [c4,f4,ab4]@5 ~ [f4,ab4]@8 ~ [f4,ab4]@3 ~ [f4,ab4]@7 ~ [f4,ab4]@5 [c4,f4,ab4]@5 ~ [f4,ab4]@8 ~ [f4,ab4]@3 ~ [f4,ab4]@7 ~ [f4,ab4]@5 [c4,f4,ab4]@5 ~ [f4,ab4]@5, ~@3 c4@4 c4@8 c4@5 ~ [c4,f4]@5 c4@7 ~@2 c4@4 c4@8 c4@6 ~@5 c4@9 c4@4 c4@8 c4@6 ~@5 c4@9 c4@4 c4@8 c4@6 ~@5 c4@5 ~]/8", // Fm F5
})).s("gm_rock_organ").gain(0.13).pan(1)

// chords · rock organ · "Organ" · soft notes
const rock_organ_soft = note("<~@22 A B ~@20 A B ~@24 C ~@13>".pickRestart({
  A: "[d4,gb4,a4]", B: "[eb4,g4,bb4]", C: "[c4,e4,g4]",
})).s("gm_rock_organ").gain(0.08).pan(1)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@48 [~@6 x!2] ~@35>").gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@22 A@4 ~@18 A@3 ~ B C ~@20 A@3 ~@11>".pickRestart({
  A: "x!8", B: "~@8 x!4 ~@4", C: "x!4 ~@4",
})).gain(0.25)

// drums · high tom
const high_tom = s("ht").struct("<~@48 [~@4 x!4 ~@8] ~@35>").gain(0.3)

// drums · ride
const ride = s("rd").struct("<A B ~@2 C@18 ~@4 A B C@16 ~@6 C@20 ~@4 A B C@6 D ~>".pickRestart({
  A: "x ~@4 x ~@5 x ~@4", B: "~ x!2 ~", C: "x!8", D: "x!7 ~",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct("<~@50 [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!7 [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3] ~@26>").gain(0.3)

stack(
  electric_guitar_clean, bass, electric_guitar_muted, rock_organ, rock_organ_soft, kick, snare, low_tom, mid_tom,
  high_tom, ride, rim
)

More by The Ventures