Strudelify

Apache

The Ventures

KeyA minorTempo120 bpm
0:00/0:00
// Apache — The Ventures
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 muted · "Muted Lead"
const electric_guitar_muted = note("<~@51 A@4 B@4 C ~@3 A@4 D ~@28>".pickRestart({
  A: "[~@18 e4@2 e4 e4@2 ~ a4@2 a4 a4@2 a4 a4@2 a4 a4@2 ~ e4@2 e4 e4@2 ~ a4@2 a4 a4@2 ~ f#4@2 f#4 f#4@2 f#4 f#4@2 f#4 f#4@2 ~ e4@2 e4 e4@2 ~ d4@2 d4 d4@2 ~ e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4, ~@23 e4@2 ~@10 a4@2 ~@4 e4@2 ~@4 a4@2 ~@10 f#4@2 ~@4 e4@2 ~@4 d4@2 ~@23]/4",
  B: "[e4@2 e4 e4@2 e4 e4@2 ~@10 e4@2 e4 e4@2 ~ a4@2 a4 a4@2 a4 a4@2 a4 a4@2 ~ e4@2 e4 e4@2 ~ a4@2 a4 a4@2 ~ f#4@2 f#4 f#4@2 f#4 f#4@2 f#4 f#4@2 ~ e4@2 e4 e4@2 ~ d4@2 d4 d4@2 ~ e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4 e4@2 e4, ~@23 e4@2 ~@10 a4@2 ~@4 e4@2 ~@4 a4@2 ~@10 f#4@2 ~@4 e4@2 ~@4 d4@2 ~@23]/4",
  C: "e4@2 e4 e4@2 e4 ~@18", D: "e4@2 e4 e4@2 e4 e4@2 ~@16",
})).s("gm_electric_guitar_muted").gain(0.42)

// other · electric guitar muted · "Muted Lead" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@55
  [~@8 e4 e4@2 e4@2 ~@11]
  ~@3
  [~@6 e4@2 e4 e4@2 e4@2 ~@11]
  ~@7
  [~@8 e4 e4@2 e4@2 ~@11]
  ~@28
>`).s("gm_electric_guitar_muted").gain(0.24)

// other · electric guitar clean · "Lead Fills"
const electric_guitar_clean = note("<~@10 A B ~@2 A B ~@2 C D ~@2 A B ~@72>".pickRestart({
  A: "~@2 a4 c5 d5@4", B: "~ a4 d5 c5 a4 ~@3", C: "~@2 d5 f5 g5@4", D: "~ d5 g5 f5 d5 ~@3",
})).s("gm_electric_guitar_clean").gain(0.45)

// chords · acoustic guitar steel · "Rhythm"
const acoustic_guitar_steel = note(`<
  ~@4 A B A B C D C E C D C E F G F H C D C E I@2 C E I@2 C E J G C E J G K L J G C E I@2 C E I@2 C M N O N@3 O N P F G
  F Q N O N P J G C E J G K L J G C E I@2 C E I@2 C E A B A B A B A B
>`.pickRestart({
  A: "~ a4@23, [a2,e3,a3,c4,e4]", B: "[d3,a3,d4,f#4]",
  C: "~ a4@2 [c4,e4,a4] a3 [a3,c4,e4,a4] ~@4 a3@2 ~@4 a4@2 ~ a3@2 ~ a4@2, [a3,c4,e4] ~@2 [c4,e4,a4] ~ [a3,c4,e4] [c4,e4,a4] [a3,c4,e4]", // Am
  D: "~ a3@2 [a3,d4,f#4] a4 [a3,d4,f#4,a4] ~@4 a4@2 ~@4 a3@2 ~ a4@2 ~ a3@2, [d4,f#4,a4] ~@2 [a3,d4,f#4] ~ [d4,f#4,a4] [a3,d4,f#4] [d4,f#4,a4]", // D
  E: "~ a3@2 [a3,c4,e4] a4 [a3,c4,e4,a4] ~@4 a4@2 ~@4 a3@2 ~ a4@2 ~ a3@2, [c4,e4,a4] ~@2 [a3,c4,e4] ~ [c4,e4,a4] [a3,c4,e4] [c4,e4,a4]", // Am
  F: "~ a4@2 [d4,f4,a4] a3 [a3,d4,f4,a4] ~@4 a3@2 ~@4 a4@2 ~ a3@2 ~ a4@2, [a3,d4,f4] ~@2 [d4,f4,a4] ~ [a3,d4,f4] [d4,f4,a4] [a3,d4,f4]", // Dm
  G: "~ b3@2 [b3,d4,g4] b4 [b3,d4,g4,b4] ~@4 b4@2 ~@4 b3@2 ~ b4@2 ~ b3@2, [d4,g4,b4] ~@2 [b3,d4,g4] ~ [d4,g4,b4] [b3,d4,g4] [d4,g4,b4]", // G
  H: "~ a3@2 [a3,d4,f4] a4 [a3,d4,f4,a4] ~@4 a4@2 ~@4 a3@2 ~ a4@2 ~ a3@2, [d4,f4,a4] ~@2 [a3,d4,f4] ~ [d4,f4,a4] [a3,d4,f4] [d4,f4,a4]", // Dm
  I: "~ a4@2 [c4,f4,a4] a3 [a3,c4,f4,a4] ~ a3@2 [a3,c4,f4] a4 [a3,c4,f4,a4] ~ a4@2 [c4,f4,a4] a3 [a3,c4,f4,a4] ~ a3@2 [a3,c4,f4] a4 [a3,c4,f4,a4], [a3,c4,f4] ~ [c4,f4,a4] ~ [a3,c4,f4] ~ [c4,f4,a4] ~", // F
  J: "~ a4@2 [c4,f4,a4] a3 [a3,c4,f4,a4] ~@4 a3@2 ~@4 a4@2 ~ a3@2 ~ a4@2, [a3,c4,f4] ~@2 [c4,f4,a4] ~ [a3,c4,f4] [c4,f4,a4] [a3,c4,f4]", // F
  K: "~ c5@2 [e4,g4,c5] c4 [c4,e4,g4,c5] ~@4 c4@2 ~@4 c5@2 ~ c4@2 ~ c5@2, [c4,e4,g4] ~@2 [e4,g4,c5] ~ [c4,e4,g4] [e4,g4,c5] [c4,e4,g4]", // C
  L: "~ a#3@2 [a#3,e4,g4] c5 [a#3,e4,g4,c5] ~@4 c5@2 ~@4 a#3@2 ~ c5@2 ~ a#3@2, [e4,g4,c5] ~@2 [a#3,e4,g4] ~ [e4,g4,c5] [a#3,e4,g4] [e4,g4,c5]", // Edim C7 C Edim C Edim C
  M: "~ a3@2 [a3,c4,e4] a4 [a3,c4,e4,a4] ~@4 a4@2 ~@10 a3@2, [c4,e4,a4] ~@2 [a3,c4,e4] ~@3 [c4,e4,a4]", // Am
  N: "~ a4@2 ~@7 a4@2 ~ a4@2 ~@7 a4@2, [a3,c4,e4] ~@2 [a3,c4,e4]!2 ~@2 [a3,c4,e4]", // Am
  O: "~ a4@2 ~@7 a4@2 ~ a4@2 ~@7 a4@2, [a3,d4,f#4] ~@2 [a3,d4,f#4]!2 ~@2 [a3,d4,f#4]", // D
  P: "~ a4@2 ~@7 a4@2 ~ a4@2 ~@9, [a3,c4,e4] ~@2 [a3,c4,e4]!2 ~@3", // Am
  Q: "~ a3@2 [a3,d4,f4] a4 [a3,d4,f4,a4] ~@4 a4@2 ~@10 a3@2, [d4,f4,a4] ~@2 [a3,d4,f4] ~@3 [d4,f4,a4]", // Dm
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.3)

// chords · acoustic guitar steel · "Rhythm"
const acoustic_guitar_steel_2 = note(`<
  ~@4 A B A B C D C E C D C E F G F H C D C E I@2 C E I@2 C E J G C E J G K L J G C E I@2 C E I@2 C M N O N@3 O N@2 F G
  F P N O N Q J G C E J G K L J G C E I@2 C E I@2 C M A B A B A B A B
>`.pickRestart({
  A: "~ e4@11, [a2,e3], ~ [a3,c4]@23", B: "~ [d4,f#4]@23, [d3,a3]",
  C: "~ [c4,e4]@2 [a3,c4,e4] [a2,e3] [a2,e3,a3,c4,e4] ~@4 [a2,e3]@2 ~@4 [c4,e4]@2 ~ [a2,e3]@2 ~ [c4,e4]@2, [a2,e3,a3] ~@2 [a3,c4,e4] ~ [a2,e3,a3] [a3,c4,e4] [a2,e3,a3]", // C Am A5 Am A5 C A5 C …
  D: "~ [a2,d3]@2 [a2,d3,a3] [d4,f#4] [a2,d3,a3,d4,f#4] ~@4 [d4,f#4]@2 ~@4 [a2,d3]@2 ~ [d4,f#4]@2 ~ [a2,d3]@2, [a3,d4,f#4] ~@2 [a2,d3,a3] ~ [a3,d4,f#4] [a2,d3,a3] [a3,d4,f#4]", // D5 D D5 D D5 D D5 D …
  E: "~ [a2,e3]@2 [a2,e3,a3] [c4,e4] [a2,e3,a3,c4,e4] ~@4 [c4,e4]@2 ~@4 [a2,e3]@2 ~ [c4,e4]@2 ~ [a2,e3]@2, [a3,c4,e4] ~@2 [a2,e3,a3] ~ [a3,c4,e4] [a2,e3,a3] [a3,c4,e4]", // A5 C Am C A5 C A5 Am …
  F: "~ [d4,f4]@2 [a3,d4,f4] [a2,d3] [a2,d3,a3,d4,f4] ~@4 [a2,d3]@2 ~@4 [d4,f4]@2 ~ [a2,d3]@2 ~ [d4,f4]@2, [a2,d3,a3] ~@2 [a3,d4,f4] ~ [a2,d3,a3] [a3,d4,f4] [a2,d3,a3]", // Dm D5 Dm D5 Dm D5 Dm D5 …
  G: "~ [g2,d3,g3]@2 [g2,d3,g3] [b3,d4,g4] [d3,g3,b3,d4,g4] g2 ~@3 [b3,d4,g4]@2 ~@4 [g2,d3,g3]@2 ~ [b3,d4,g4]@2 ~ [g2,d3,g3]@2, [b3,d4,g4] ~@2 [g2,d3,g3] ~ [b3,d4,g4] [g2,d3,g3] [b3,d4,g4]", // G5 G G5 G G5 G G5 G …
  H: "~ [a2,d3]@2 [a2,d3,a3] [d4,f4] [a2,d3,a3,d4,f4] ~@4 [d4,f4]@2 ~@4 [a2,d3]@2 ~ [d4,f4]@2 ~ [a2,d3]@2, [a3,d4,f4] ~@2 [a2,d3,a3] ~ [a3,d4,f4] [a2,d3,a3] [a3,d4,f4]", // D5 Dm D5 Dm D5 Dm D5 Dm …
  I: "~ [c4,f4]@2 [a3,c4,f4] [c3,f3] [c3,f3,a3,c4,f4] ~ [c3,f3]@2 [c3,f3,a3] [c4,f4] [c3,f3,a3,c4,f4] ~ [c4,f4]@2 [a3,c4,f4] [c3,f3] [c3,f3,a3,c4,f4] ~ [c3,f3]@2 [c3,f3,a3] [c4,f4] [c3,f3,a3,c4,f4], [c3,f3,a3] ~ [a3,c4,f4] ~ [c3,f3,a3] ~ [a3,c4,f4] ~", // F5 F F5 F F5 F F5 F …
  J: "~ [a3,c4,f4]@2 [a3,c4,f4] [f2,c3,f3] [f2,c3,f3,a3,c4] f4 ~@3 [f2,c3,f3]@2 ~@4 [a3,c4,f4]@2 ~ [f2,c3,f3]@2 ~ [a3,c4,f4]@2, [f2,c3,f3] ~@2 [a3,c4,f4] ~ [f2,c3,f3] [a3,c4,f4] [f2,c3,f3]", // F F5 F F5 F F5 F F5 …
  K: "~ [c4,e4]@2 [g3,c4,e4] [c3,e3] [c3,e3,g3,c4,e4] ~@4 [c3,e3]@2 ~@4 [c4,e4]@2 ~ [c3,e3]@2 ~ [c4,e4]@2, [c3,e3,g3] ~@2 [g3,c4,e4] ~ [c3,e3,g3] [g3,c4,e4] [c3,e3,g3]", // C
  L: "~ [c3,e3]@2 [c3,e3,a#3] [c4,e4] [c3,e3,a#3,c4,e4] ~@4 [c4,e4]@2 ~@4 [c3,e3]@2 ~ [c4,e4]@2 ~ [c3,e3]@2, [a#3,c4,e4] ~@2 [c3,e3,a#3] ~ [a#3,c4,e4] [c3,e3,a#3] [a#3,c4,e4]", // C C7 C C7 C C7
  M: "~ [a2,e3]@2 [a2,e3,a3] [c4,e4] [a2,e3,a3,c4,e4] ~@4 [c4,e4]@2 ~@10 [a2,e3]@2, [a3,c4,e4] ~@2 [a2,e3,a3] ~@3 [a3,c4,e4]", // A5 C Am C A5 Am A5 Am
  N: "~ [c4,e4]@2 ~@7 [a2,e3]@2 ~ [c4,e4]@2 ~@7 [a2,e3]@2, [a2,e3,a3] ~@2 [a3,c4,e4] [a2,e3,a3] ~@2 [a3,c4,e4]", // C A5 C A5 Am A5 Am
  O: "~ [d4,f#4]@2 ~@7 [a2,d3]@2 ~ [d4,f#4]@2 ~@7 [a2,d3]@2, [a2,d3,a3] ~@2 [a3,d4,f#4] [a2,d3,a3] ~@2 [a3,d4,f#4]", // D D5 D D5 D D5 D
  P: "~ [a2,d3]@2 [a2,d3,a3] [d4,f4] [a2,d3,a3,d4,f4] ~@4 [d4,f4]@2 ~@10 [a2,d3]@2, [a3,d4,f4] ~@2 [a2,d3,a3] ~@3 [a3,d4,f4]", // D5 Dm D5 Dm D5 Dm
  Q: "~ [c4,e4]@2 ~@7 [a2,e3]@2 ~ [c4,e4]@2 ~@9, [a2,e3,a3] ~@2 [a3,c4,e4] [a2,e3,a3] ~@3", // C A5 C A5 Am A5
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.3)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@7 A B C D@2 B C D E F G H I B C D J K L M N K L M N O P D J O Q R S O P D J K L M N K L M T U V U@3 V U W F G H X U
  V U Y O P D J O Q R S O P D J K L M N K L M Z ~@8
>`.pickRestart({
  A: "~@6 e2 g2", B: "a2@4 e2@2 e2 a2", C: "f#2@4 d2@2 e2 g2", D: "a2@4 e2@2 e2 g2", E: "a2@4 e2@2 a1 c2",
  F: "d2@4 a1@2 a1 d2", G: "b1@4 g1@2 a1 c2", H: "d2@4 a1@2 a1 c2", I: "d2@4 a1@2 e2 g2", J: "a2@4 e2@2 c2 e2",
  K: "f2@4 c2@2 c2 e2", L: "f2@4 c2@2 c2 d#2", M: "e2@4 a1@2 c2 d#2", N: "e2@4 a1@2 c2 e2", O: "f2@4 c2@2 d2 f#2",
  P: "g2@4 d2@2 e2 g2", Q: "g2@4 d2@2 g2 b2", R: "c3@4 g2@2 c3 b2", S: "a#2@4 g2@2 c2 e2", T: "e2@4 a1@2 ~ a2",
  U: "a2 ~@2 a2!2 ~@2 a2", V: "d2 ~@2 d2!2 ~@2 d2", W: "a2 ~@2 a2!2 ~ a1 c2", X: "d2@4 a1@2 ~ a2",
  Y: "a2 ~@2 a2!2 ~ c2 e2", Z: "e2@2 a1 ~",
})).s("gm_electric_bass_pick").gain(0.4).pan(0.7)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@8 A@16 ~@8 A@12 ~@7 B C D C@5 E A@3 F C@3 E A@12 ~@16>".pickRestart({
  A: "~ x ~ x", B: "~@7 x", C: "x ~@2 x!2 ~@2 x", D: "x ~@8 x ~@2 x ~@7 x ~@3", E: "x ~@2 x!2 ~@3", F: "~@2 x ~@3 x!2",
})).gain(0.66)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A@8 B@16 C@2 D@2 C@2 D@2 B@12 C@2 E D C@2 D@2 ~@8 F@4 ~@4 B@12 C@2 D@2 C@2 D@2 A@5 G H ~
>`.pickRestart({
  A: "x!8", B: "x ~@2 x!4 ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", C: "x ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x!2 ~@2 x ~ x",
  D: "x!4 ~ x!2 ~ x!2 ~ x!2 ~@2 x ~@2 x ~@2 x ~@2", E: "x!5 ~ x ~ x!5 ~@2 x ~@2 x ~@2 x ~@2",
  F: "x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", G: "x!5 ~@3", H: "x!2",
})).gain(0.33)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@26 A@2 ~@2 A@2 ~@14 B A ~@2 A@2 ~@30 A@2 ~@2 A@2 ~@5 C D E>".pickRestart({
  A: "~@4 x ~@2 x ~@2 x ~@13", B: "~@5 x ~ x ~@16", C: "~@5 x!3", D: "~ x!3 ~ x!3", E: "x!8",
})).gain(0.2)

stack(
  electric_guitar_muted, electric_guitar_muted_2, electric_guitar_clean, acoustic_guitar_steel, acoustic_guitar_steel_2,
  bass, pedal_hat, mid_tom, mid_tom_soft
)

More by The Ventures