Strudelify

Spanish Caravan

The Doors

KeyE minorTempo125 bpm
0:00/0:00
// Spanish Caravan — The Doors
// 125 bpm, 3/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/3)

// 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.

// chords · harpsichord · "Track 1"
const harpsichord = note(`<
  A@7 B C D C D C E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AK AO AP AQ AK
  AM AR AS AT AU AV AW AX AY AZ BA BB@3 BC ~@2 BD BE BF BG BH BI BJ BK BJ BL BJ BM BN BO BP BQ BR BS BT BU BP BV BW@2 BX
  BY BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM@4 CN AI AJ AK AL AM AN AK AO AP AQ AK AM AR AS AT AU AV AW AX AY AZ BA BB
  BC CO CP CQ
>`.pickRestart({
  A: "~@3 b3@3 ~@2 b3@3 ~@2 b3@3", B: "~@3 e4@3 ~@2 d5@3 ~@2 e5@3", C: "~@3 c5@3 ~@2 d5@3 ~@2 b4@3",
  D: "~@3 g4@3 ~@2 d5@3 ~@2 e5@3", E: "~@3 c5@3 ~@2 a4@3 ~@2 b4@3", F: "~@8 g4@3 f#4@2 e4@3", G: "f#4@5 f#4@5 ~ g4@5",
  H: "a4@5 f#4@5 ~ g4@5", I: "a4@5 b4@3 a4@3 g4@5", J: "f#4@5 g4@3 a4@3 g4@5", K: "d5@11 e4@5", L: "a4@5 e4@5 ~ g4@5",
  M: "a4@5 c5@3 a4@3 a4@5", N: "b4@3 a4@2 g4@5 ~ f#4@5", O: "e4@5 f#4@5 ~ d4@5", P: "e4@5 f#4@5 ~ e4@5",
  Q: "f#4@3 g4@2 a4@5 ~ g4@5", R: "a4@3 g4@2 f#4@5 ~@6", S: "a4@5 g#4@3 c#4@3 ~@5", T: "a4@5 g#4@3 c#4@3 e4@5",
  U: "d4@5 e4@3 f#4@3 g4@5", V: "[f#4,a4]@5 [e4,g4]@5 ~ [f#4,a4]@5", W: "b4@5 g4@5 ~ b4@5", X: "d5@5 c5@3 b4@3 a4@5",
  Y: "c5@5 g4@5 ~ c5@5", Z: "d5@5 e5@3 d5@3 c5@5", AA: "f4@5 a4@5 ~ f5@5", AB: "c5@5 a4@3 f4@3 [d#4,a4]@5",
  AC: "[d4,a#4]@5 f4@5 ~ a#4@5", AD: "d5@3 a#4@2 f4@5 ~ a#4@5", AE: "c#5@5 f#4@3 a#4@3 c#5@5",
  AF: "f#5@5 f#4@5 ~ [e4,a#4]@5", AG: "[d#4,b4]", AH: "~@3 [g3,b3]@2 ~@3 [g3,b3]@3 ~@2 [b3,e4]@3, e4@5 f#4@5 ~ g4@5",
  AI: "~@3 [c4,e4]@2 ~@3 [c4,e4]@3 ~@2 [c4,e4]@3, a4@5 b4@5 ~ c5@5", // C
  AJ: "~@3 [b3,d#4]@2 ~@3 [b3,d#4]@3 ~@2 [a3,d#4]@3, b4@5 a4@5 ~ f#4@5", // B Adim
  AK: "~@3 [g3,b3]@2 [g3,b3]@3 ~@3 [g3,b3]@2 [g3,b3]@3, e4", AL: "g3@3 b3@2 a3@3 b3@3 b3@2 e4@3, e4@5 f#4@5 ~ g4@5",
  AM: "c4@3 e4@2 d4@3 e4@3 e4@2 a4@3, a4@5 b4@5 ~ c5@5", AN: "d4@3 b3@2 c4@3 a3@3 b3@2 d#4@3, b4@5 a4@5 ~ f#4@5",
  AO: "a4@5 e3 ~ a3 c4@3 e4@2 [c4,c5]@3", AP: "~@3 g3 b3 ~@3 b3@3 g3@2 b3@3, b4@5 e4@5 ~ e4@5",
  AQ: "~@3 f#3 a3 b3@3 e4@3 b3@2 f#3@3, f#4@5 g4@5 ~ f#4@5", AR: "d4@3 c4 b3 a3@3 g3@3 a3@2 b3@3, b4@5 e4@5 ~ e4@5",
  AS: "c4@3 b3 a3 b3@3 e4@3 b3@2 f#3@3, f#4@5 g4@5 ~ f#4@5", AT: "[g3,e4]@5 [b3,e4]@3 g3@3 [e4,g4]@2 g3@3",
  AU: "~@3 g3@2 b3@3 g3@3 b3@2 g3@3, ~@5 f#4@5 ~ e4@5", AV: "~@3 g3@2 b3@3 g3@3 b3@2 g3@3, ~@5 e4@5 ~ f#4@5",
  AW: "b3@3 g3@2 b3@3 g3@3 b3@2 g3@3, g4@5 f#4@5 ~ e4@5", AX: "~@3 f#3@2 c4@3 f#3@3 c4@2 f#3@3, ~@5 d4@5 ~ e4@5",
  AY: "c4@3 f#3@2 c4@3 e3@3 d4@5, f#4@5 e4@5 ~@6", AZ: "[e3,c4]",
  BA: "c4 c4@4 d4 ~ c4 b3 c4 ~ d4 c4 b3 ~ c4, ~ b3 ~@14",
  BB: "d4 [b3,c4] c4 [c4,d4] b3 [b3,c4] c4 [b3,c4] b3 [b3,c4] c4 ~@5", BC: "~@5 b3@5 ~@6", BD: "b4@5 c5@5 ~ a4@5",
  BE: "b4@5 g4@5 ~ e4@5", BF: "b5@5 c6@5 ~ a5@5", BG: "b5@5 g5@5 ~ a5@5", BH: "f#5@5 g5@5 ~ f#5@5",
  BI: "e5@5 [d5,d6]@5 ~ [e5,e6]@5", BJ: "[c5,c6]@5 [d5,d6]@5 ~ [b4,b5]@5", BK: "g5@5 [d5,d6]@5 ~ [e5,e6]@5",
  BL: "g5@5 [d5,e6]@5 ~ [e5,f#6]@5", BM: "[c5,c6]@5 [a4,a5]@5 ~ [b4,b5]@5", BN: "[g4,g5]@5 [f#4,f#5]@5 ~ [e4,e5]@5",
  BO: "b4@5 f#5@3 g5@3 a5@5", BP: "b5@5 a5@3 g5@3 f#5@5", BQ: "g5@5 a5@3 g5@3 f#5@5", BR: "e5@5 d5@5 ~ e5@5",
  BS: "c5@5 d5@3 e5@3 f#5@5", BT: "d5@5 e5@3 f#5@3 g5@5", BU: "e5@5 f#5@3 g5@3 a5@5", BV: "g5@5 b5@3 c6@5 b5@3",
  BW: "[g5@5 f#5@5 ~ e5@2 f#5@5 ~ e5@2 [d#5,f#5]@5 ~ [e5,g5]@5]/2", BX: "[f#5,a5]@5 [e5,g5]@5 ~ [d#5,f#5]@5",
  BY: "a5@5 c#6@3 d6@3 f#6@5", BZ: "e6@3 d6@2 c#6@5 ~ e6@5", CA: "d5@3 e5@2 f#5@3 g5@3 a5@5", CB: "~@5 b5@5 ~ a5@5",
  CC: "a5@5 g5@3 a5@3 b5@5", CD: "a5@5 g5@5 ~ a5@5", CE: "e6@3 d6@2 c6@3 b5@3 a5@2 g5@3", CF: "f5@5 g5@5 ~ a5@5",
  CG: "f5@5 a5@5 ~ c6@5", CH: "f6@5 c6@5 ~ a5@5", CI: "d6@3 c6@2 a#5@3 a5@3 g5@5", CJ: "[g#5,a5]@5 a#5@5 ~ [g#5,a5]@5",
  CK: "f5@3 g#5@2 c6@3 f#6@3 d#6@2 [a5,d#6]@3", CL: "f#5@5 a#5@5 ~ c#6@5",
  CM: "[b4@5 b4@5 ~ b4@5 b4@5 b4@5 ~ b4@5 b4@5 b4@5 ~ b4@5 b4@5 b4@5 ~ b4@5, b5]/4",
  CN: "~@3 [g3,b3]@2 ~@3 [g3,b3]@3 ~@2 [b3,e4]@3, e4@11 ~@5, ~@5 f#4@5 ~ g4@5", CO: "[e3,c4]@11 ~@5", CP: "[d5,g5,b5]",
  CQ: "[b4,d5,g5,b5]@3 ~@13", // G
})).s("gm_harpsichord").gain(0.26).pan(1)

stack(harpsichord)

More by The Doors