Strudelify

Conquistador

Procol Harum

KeyB♭ majorTempo131 bpm
0:00/0:00
// Conquistador — Procol Harum
// 131 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: ch 13 "Contra bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(131/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.

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@13 A B C@3 D E@3 F G H I F G H I J K J L M B C@3 B E@3 F G H I F G H I J K J K J K J K J K J K J K J K J K J K J K J
  K J K J L ~@9 A B C@3 D E@3 F G H I F G H I J K J K J K J K J K J K J K J K J K J K J K J K J K J L N@3
>`.pickRestart({
  A: "~@5 d1 f1 gb1", B: "g1@6 d2 db2", C: "[c2@6 e2 f2@7 e2 eb2@6 d1 g2 a2]/3", D: "g2@6 d2 db2",
  E: "[c2@6 e2 f2@7 e2 eb2@6 ~@3]/3", F: "g2@2 g2@2 b1 d2@2 db2", G: "c2@3 ~ c2@3 ~ c2@2 g2@2 gb2@3 ~",
  H: "f2@3 ~ f2@3 ~ f2@2 c2@2 f2@3 ~", I: "g2@3 ~ g2@3 ~ g2@2 d2@2 f2@3 ~", J: "g2 d2 f2 g2@2 gb2 f2 e2",
  K: "eb2 bb1 db2 eb2@2 bb1 db2 eb2", L: "eb2 bb1 db2 eb2@2 ~ d2@2", M: "g1@4 ~ d1 f1 gb1", N: "[g1@7 ~]/3",
})).s("gm_electric_bass_pick").gain(0.57)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  ~@13 A@2 B@3 C B@3 D E F G H E I G@2 J G J K@2 L@3 K L@3 M E F G H E I G@2 J G J G J G J G N G N G N G N G N G N G N G
  N G N G O ~@9 P@2 L@3 K L@3 M E F G H E I G@2 N G N G N G Q@6 R@2 S@2 T R@2 U V W X G N G O Y@3
>`.pickRestart({
  A: "[~@5 d5@3 [g4,bb4,d5]@8, ~@5 gb5@8 ~@3]/2", B: "[[g4,c5,e5]@7 [a4,c5,f5]@8 [a4,c5,eb5]@8 ~]/3", C: "[g4,bb4,d5]",
  D: "[g4,b4,d5,f5]", E: "[c5,eb5,g5]", F: "[c5,eb5,f5,a5]", G: "[d5,g5,bb5]", H: "[d5,g5,b5]", I: "[c5,f5,a5]",
  J: "[db5,eb5,g5,bb5]", K: "[d4,g5,bb5]", L: "[[g4,e5,c6]@7 [a4,c5,f5]@8 [a4,c5,eb5]@8 ~]/3", M: "[g4,d5,f5]",
  N: "[db5,eb5,bb5]", O: "[db5,eb5,bb5]@3 [d4,gb4,a4]", P: "[~ [d4,g5,bb5], ~@5 [d5,gb5]@8 ~@3]/2",
  Q: "[[db5,eb5,bb5]@15 [bb5,bb6]@32 bb6@4 ~ c7@4 bb6@2 g6@4 [c6,g6]@4 bb5@2 [db6,g6]@2 [c6,g6]@4 [bb5,g6]@2 [db6,g6]@2 [c6,g6]@4 [bb5,g6]@2 [db6,g6]@2 [c6,g6]@4 [bb5,g6]@2 [bb5,g6]@2 db6 c6]/6", // Eb7 Bb C5 Dbdim C5 Eb Dbdim C5 …
  R: "[bb5 g5 db6 c6 bb5 g5 db6 c6 bb5 g5 db6 c6 bb5 c6 bb5 [db6,e6]@4 ~ [d6,f6]@4 [d6,f6]@2 g6@2 g6@4]/2", // Dbm Dm
  S: "[[db6,g6]@2 [db6,g6]@4 [db6,g6]@4 ~@5 f6@17]/2", T: "c6@2 bb5 c6 bb5@2 g5 bb5 g5@4 ~@4",
  U: "[c5,f5]@2 ~ [c5,f5]@2 [c5,f5]@2 ~ [c5,f5]@2 ~ [c5,f5]@2 f5@2 ~", // F5
  V: "[d5,g5]@2 ~ [d5,g5]@2 [d5,g5]@2 ~ [d5,g5]@2 ~ [d5,g5]@2 g5@2 ~", W: "[d5,f6]",
  X: "[eb5,f6]@2 [eb5,f6]@3 ~ [eb5,f6]@4 ~@6", Y: "[[d4,g5,bb5]@7 ~]/3",
})).s("gm_drawbar_organ").gain(0.05).pan(0.9)

// other · electric guitar clean · "Elec guitar"
const electric_guitar_clean = note(`<
  ~@13 A B C@3 D E@3 ~@8 F G F H I B C@3 D E@3 ~@8 F G F G F G F G F G F G F G F G F G F G F G F G F G F H ~@9 A B C@3 D
  E@3 ~@8 F G F G F G F G F G F G F G F G F G F G F G F G F G F H ~@3
>`.pickRestart({
  A: "~@5 d3 f3 gb3", B: "g3@6 d3 db3", C: "[c3@6 e3 f3@7 e3 eb3@6 d3 g3 a3]/3", D: "bb3@6 d3 db3",
  E: "[c3@6 e3 f3@7 e3 eb3@6 ~@3]/3", F: "g3 d3 f3 g3@2 gb3 f3 e3", G: "eb3 bb2 db3 eb3@2 bb2 db3 eb3",
  H: "eb3 bb2 db3 eb3@2 ~ d3@2", I: "g3@4 ~ d3 f3 gb3",
})).s("gm_electric_guitar_clean").gain(0.19).pan(0.3)

// other · distortion guitar · "Guitar solo"
const distortion_guitar = note("<~@59 A B C D E@2 F G H I J K L@3 M N O N P Q ~@56>".pickRestart({
  A: "f3@2 bb3@2 bb3@8 c4 bb3 g3@2", B: "c4@11 ~ c4 g3 c4@2, ~@11 db4@2 ~@3",
  C: "bb3 c4 bb3 c4 bb3 c4 bb3 c4@2 bb3 c4 ~ bb3 c4 bb3 g3", D: "bb3@2 a3@2 g3 f3 g3 f3 g3@4 bb3@2 c4 bb3",
  E: "[c4 d4 [d4,f4]!2 c4 d4 [d4,f4]!2 c4 d4 [d4,f4]!2 c4 d4 [d4,f4] g4@3 g4@2 g4 f4 d4@2 f4@4 g4@4]/2", // Dm
  F: "[g4,bb4]@2 bb4 [g4,bb4]@2 bb4 [g4,bb4] d5", G: "g4@2 bb4@2 c5@2 d5@2 c5 g4 f4@2 g4@4",
  H: "db5 c5 bb4 f4 g4 c5@4 c5@4 ~ d5@2", I: "c5@2 c5@2 bb4 c5 bb4@2 c5@2 c5@2 c5 bb4 g4@2",
  J: "bb4@2 bb4@2 g4 f4 g4@4 [db4,d4]@2 d4@4", K: "f4 d4 c4 bb3 c4 bb3 g3 f3 [eb3,bb3]@8",
  L: "[f4@2 d5@4 d5@4 d5@2 c5 bb4 ~ c5@3 d5 f5 d5 c5 d5 f5 d5 c5 d5 f5 d5 c5 d5 f5@5 g5@4 g5@4 f5@2 d5@2, ~@7 g4 ~@16]/3",
  M: "c5@2 bb4@2 c5 f5 g5@2 c6@8", N: "g3 d3 f3 g3@2 gb3 f3 e3", O: "eb3 bb2 db3 eb3@2 bb2 db3 eb3",
  P: "eb3 bb2 db3 [eb3,bb3]@3 [d3,a4]@2", Q: "g3 ~",
})).s("gm_distortion_guitar").gain(0.7).pan(0.6)

// chords · electric guitar muted · "mute guitar"
const electric_guitar_muted = note("<~@22 A B C D A B C E ~@13 A B C D A B C E ~@46 A B C D A B C E ~@31>".pickRestart({
  A: "~@4 [g3,b3,f4]@3 [g3,b3,f4]!2 ~@3 [g3,b3,f4] ~@3", B: "~@4 [eb4,g4,c5]@3 [eb4,g4,c5]!2 ~@3 [eb4,g4,c5] ~@3",
  C: "~@4 [f3,c4,eb4,a4]@3 [c4,eb4,a4]!2 ~@3 [c4,eb4,a4] ~@3", D: "~@4 [g3,d4,bb4] ~@3 g3 f3 d3 f3 g3 f3 d3 ~",
  E: "~@4 [d4,g4,bb4]@3 [d4,g4,bb4]!2 ~@3 [d4,g4,bb4] ~@3", // Gm
})).s("gm_electric_guitar_muted").gain(0.25).pan(1)

// chords · piano
const piano = note(`<
  ~@14 A B C@2 A B C@2 D E F G D E F H G I G J A@2 B C@2 A B C@2 D E F G D E F H G I G I G I G I ~@30 A B C@2 A B C@2 D
  E F G D E F H ~@31
>`.pickRestart({
  A: "[d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~@5", // Gm
  B: "[e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~@5", // C
  C: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~@5", // F
  D: "[d4,g4,b4]@2 [d4,g4,b4]@2 [d4,g4,b4] [d4,g4,b4]@2 [d4,g4,b4]", E: "[c5,eb5,g5]!4",
  F: "[c4,f4,a4]@2 [c4,f4,a4]@2 [c4,f4,a4] [c4,f4,a4]@2 [c4,f4,a4]", G: "[d4,g4,bb4]!4",
  H: "[d4,g4,bb4]@4 [d4,g4,bb4]@4 [a6,bb6] [g6,ab6] [f6,gb6] [eb6,e6] d6 ~@3", I: "[eb4,g4,bb4,db5]!4",
  J: "[eb4,g4,bb4,db5]!3 [d4,gb4,a4]", // Eb7 D
})).s("gm_piano").gain(0.02).pan(0)

// chords · piano · soft notes
const piano_soft = note("<~@14 A B C@2 A B C@2 ~@12 A@2 B C@2 A B C@2 ~@46 A B C@2 A B C@2 ~@39>".pickRestart({
  A: "~@12 [d4,g4,bb4] ~ [d4,g4,bb4] ~", B: "~@12 [e4,g4,c5] ~ [e4,g4,c5] ~", C: "~@12 [a3,c4,f4] ~ [a3,c4,f4] ~",
})).s("gm_piano").gain(0.02).pan(0)

// chords · trombone
const trombone = note(`<
  ~@59 A B A B A B A B C ~ C ~ C ~ C ~ A B A B ~@34 A B A B A B A B C ~ C ~ C ~ C ~ C B C B ~@3
>`.pickRestart({
  A: "~@4 [d4,g4] ~@3 [d4,g4] ~@7", B: "~@4 [db4,g4] ~@3 [db4,g4] ~@7", C: "~ d4@2 ~",
})).s("gm_trombone").gain(0.25).pan(0)

// other · trumpet
const trumpet = note(`<
  ~@4 A B C D ~ E ~@22 F G ~@19 F G ~@2 F ~ H I H I H I H I J ~ J ~ J ~ J ~ H I H I A B C D ~ E ~@22 F G ~@2 F ~ H I H I
  H I H I J ~ J ~ J ~ J ~ J I J K L M@2
>`.pickRestart({
  A: "~@12 d5 ~ eb5 ~", B: "f5 g5 f5 eb5 d5@8 ~@4", C: "~@12 c5 ~ db5 ~", D: "eb5 f5 eb5 db5 c5@8 ~@4",
  E: "a4 ~ a4 bb4 c5@12", F: "~@8 bb4 a4 bb4 c5 d5 c5 d5 f5", G: "g5 ~", H: "~@4 d5 ~@3 d5 ~@7",
  I: "~@4 db5 ~@3 db5 ~@7", J: "~ g5@2 ~", K: "~@4 db5 ~@11", L: "~@8 d5 ~@3 eb5 ~@3",
  M: "[f5@2 g5@2 f5@2 ~ eb5@2 d5@17 ~@6]/2",
})).s("gm_trumpet").gain(0.4)

// other · oboe
const oboe = note("<~@4 A@2 B@2 C@2 D ~@68 A@2 B@2 C@2 D ~@3 E F@3 E F@3 ~@39>".pickRestart({
  A: "g5 ~ g5!3 ~ g5!3 ~ g5!3 ~ g5!2", B: "f5 ~ f5!3 ~ f5!3 ~ f5!3 ~ f5!2", C: "gb5 ~ gb5!3 ~ gb5!3 ~ gb5!3 ~ gb5!2",
  D: "d5@3 ~", E: "[bb5,g6]", F: "[[c6,g6]@7 [c6,f6]@8 [c6,f6]@8 ~]/3",
})).s("gm_oboe").gain(0.1).pan(0.6)

// other · tremolo strings · "Strings1"
const tremolo_strings = note(`<
  A B C D A B C D E@2 F G H@2 I J K L I J K L M N O P M N O P M Q M R I@2 J K L I J K L M N O P M N O P M Q M Q M Q M Q
  M Q M Q M Q M Q M Q M Q M Q M Q M Q M S A B C D E@2 F G H@2 I J K L I J K L M N O P M N O P M Q M Q M Q M Q M Q M Q
  T@2 M Q M Q M Q M Q M Q M Q M Q U@3
>`.pickRestart({
  A: "d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c5 ~ d5 ~", B: "d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~",
  C: "c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ bb4 ~ c5 ~", D: "c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~",
  E: "gb5 ~ gb5 ~ gb5 ~ gb5 ~ gb5 ~ gb5 ~ gb5 ~ gb5 ~", F: "bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~",
  G: "d4 ~ d4 ~ d4 ~ d4 ~ c4 ~ c4 ~ c4 ~ c4 ~", H: "d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~",
  I: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~", J: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ f4 ~",
  K: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ eb4 ~", L: "eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~", M: "d5",
  N: "eb5 d5 c5 bb4", O: "a4", P: "d5 c5 bb4 a4", Q: "eb5", R: "eb5@3 gb4", S: "eb5@12 d5 ~@3", T: "g4",
  U: "[g3@7 ~]/3",
})).s("gm_tremolo_strings").gain(0.17).pan(1)

// other · tremolo strings · "Strings2"
const tremolo_strings_2 = note(`<
  A B C D A B C D E@2 F G F@2 H I J@2 H I J@2 ~@8 K@3 L H@2 I J@2 H I J@2 ~@8 K@27 M A B C D E@2 F G F@2 H I J@2 H I J@2
  ~@8 K@28 N@3
>`.pickRestart({
  A: "bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ a5 ~ bb5 ~", B: "bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~ bb5 ~",
  C: "ab5 ~ ab5 ~ ab5 ~ ab5 ~ ab5 ~ ab5 ~ g5 ~ ab5 ~", D: "ab5 ~ ab5 ~ ab5 ~ ab5 ~ ab5 ~ ab5 ~ ab5 ~ ab5 ~",
  E: "d5 ~ eb5 d5!2 ~ eb5 d5!2 ~ d5 eb5 d5 ~ eb5 d5", F: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~",
  G: "g4 ~ g4 ~ g4 ~ g4 ~ gb4 ~ gb4 ~ gb4 ~ gb4 ~", H: "d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~",
  I: "e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ c4 ~", J: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~", K: "bb4", L: "bb4@3 a4",
  M: "bb4@3 ~", N: "[d4@7 ~]/3",
})).s("gm_tremolo_strings").gain(0.17).pan(0)

// bass · acoustic bass · "Contra bass"
const bass_2 = note("<A@2 B@2 A@2 B@2 C@2 D@2 E ~@66 A@2 B@2 C@2 D@2 E ~@45 F@3>".pickRestart({
  A: "[g2@6 f2 g2@8 ~]/2", B: "[f2@6 eb2 f2@8 ~]/2", C: "d2/2", D: "[g1@3 gb1]/2", E: "g1 ~@3", F: "[g2@11 ~@5]/3",
})).s("gm_acoustic_bass").gain(0.14).pan(0.3)

// other · cello
const cello = note("<A@2 B@2 A@2 B@2 ~@2 C D E ~@66 A@2 B@2 ~@2 C D E ~@48>".pickRestart({
  A: "[g3@6 f3 g3@8 ~]/2", B: "[f3@6 eb3 f3@8 ~]/2", C: "g3", D: "bb2 a2", E: "g2 ~@3",
})).s("gm_cello").gain(0.14).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@13 A B@2 ~ C B D E F G@7 B H@3 I B@3 ~ C B D E F G@7 B H@7 J H@7 K L K L M L M L H ~@3 B@2 ~@8 A B@2 ~ C B D E F G@7
  B H@15 K L K L M L M L K H@3 ~ B ~ N
>`.pickRestart({
  A: "~@6 x!2", B: "x", C: "~@2 x ~@2 x ~ x", D: "x ~@6 x", E: "~@7 x", F: "~ x ~@2", G: "x!2", H: "~ x ~ x ~ x ~ x",
  I: "~ x ~ x ~@4", J: "~@5 x ~ x", K: "~ x ~ x ~ x ~@2", L: "x ~@2 x ~ x ~ x", M: "~ x ~@6", N: "~ x",
})).gain(0.62)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@15 A@2 ~@19 A@2 ~@29 B ~ B ~@2 C ~@2 D@3 ~@3 B ~ B ~ B ~@4 A@2 ~@29 B ~ B ~@2 C ~@7 E F
>`.pickRestart({
  A: "~@7 x", B: "x", C: "~@11 x ~ x ~@2", D: "x ~@4 x!3", E: "~@7 x ~@8", F: "~@4 x!5 ~@7",
})).gain(0.62)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@135 [~ x!3 ~@12]>").gain(0.31)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@15 A@2 ~@5 B@12 ~@2 A@2 ~@5 B@24 C B D B D B D B@5 ~@11 A@2 ~@5 B@24 C B D B D B D B@5 ~@3
>`.pickRestart({
  A: "~@6 x!2", B: "x!4", C: "~@2 x!2", D: "x ~ x!2",
})).gain(0.62)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 A ~@20 A ~@36 B ~ B ~@14 A ~@35 A ~@3>".pickRestart({
  A: "~@3 x", B: "~@7 x",
})).gain(0.62)

// drums · open hat
const open_hat = s("oh").struct("<~@20 A ~ B@12 ~@7 A ~ B@36 ~@16 A ~ B@36 ~@3>".pickRestart({
  A: "~@6 x!2", B: "~@5 x ~@2",
})).gain(0.62)

// drums · high tom
const high_tom = s("ht").struct("<~@33 A ~@38 B ~@5 A@2 ~ A ~@44 B ~@9>".pickRestart({
// … 21 more lines

More by Procol Harum