Strudelify
Cloudbusting cover art

Hounds Of Love

Cloudbusting

Kate Bush

KeyE majorTempo112 bpm
0:00/0:00
// Cloudbusting — Kate Bush
// 112 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 1, 6/4 at bar 2, 4/4 at bar 4, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 · banjo · "Balalaika" · C#
const banjo = note("<~@8 [e4 e3 e4 f#4 d#4 d#3 d#4 e4] [[c#3,c#4] ~] ~@132>").s("gm_banjo").gain(0.4)

// chords · recorder · "Balalaika" · G#5
const recorder = note("<~@140 [~@13 d#5@3, ~@3 g#4] [~ [g#4,d#5]@3]>").s("gm_recorder").gain(0.3)

// other · violin · "Violin 1"
const violin = note("<~@35 A B C@4 D E F@4 ~@95>".pickRestart({
  A: "~@4 [c#5,c#6]@2 [b4,b5] [a4,a5]", B: "[g#4,g#5] [f#4,f#5] [c#5,c#6]@2",
  C: "[[d#5,d#6] [e5,e6] [f#5,f#6] [g#5,g#6] [f#5,f#6]@26 ~@2]/4", // D# E F# G# F#
  D: "[c#5,c#6]@2 [b4,b5] [a4,a5] [g#4,g#5]@2 [f#4,f#5]@2", E: "[c#5,c#6]@4 [d#5,d#6] [e5,e6] [f#5,f#6] [g#5,g#6]",
  F: "[[f#5,f#6]@13 ~@3]/4", // F#
})).s("gm_violin").gain(0.2)

// other · violin · "Violin 2"
const violin_2 = note(`<
  ~@2 A B ~@15 C D E F G D E F H I J K G D L M N ~@2 O P ~@3 A B ~@10 D Q R Q D Q R Q I S I Q D Q ~@16 D Q R Q D Q R Q I
  S I Q D Q ~@43
>`.pickRestart({
  A: "~@4 e4 ~ e4 f#4", B: "d#4 ~ d#4 e4 c#4 ~@3", C: "~@4 b3 ~ b3 c#4", D: "b3 ~ b3 c#4 b3 ~ b3 c#4",
  E: "d#4 e4 d#4 c#4!2 ~ c#4 b3", F: "c#4 ~ c#4 b3!2 ~ b3 c#4", G: "d#4 e4 d#4 c#4 b3 ~ b3 c#4",
  H: "d#4 e4 d#4 c#4 e4 ~ e4 d#4", I: "e4 ~ e4 d#4 e4 ~ e4 d#4", J: "e4 f#4 e4 d#4 e4 ~ e4 d#4",
  K: "e4 ~ e4 d#4 b3 ~ b3 c#4", L: "d#4 e4 d#4 c#4 f#4 ~ f#4 c#4", M: "e4 ~ e4 c#4 d#4 ~ d#4 c#4",
  N: "e4 d#4 c#4 b3 ~@4", O: "e4 ~ e4 f#4 d#4 ~ d#4 e4", P: "c#4 ~@7", Q: "b3 ~ b3 c#4 d#4 e4 d#4 c#4",
  R: "c#4 ~ c#4 b3 c#4 ~ c#4 b3", S: "e4 ~ e4 d#4 e4 f#4 e4 d#4",
})).s("gm_violin").gain(0.4)

// other · violin · "Violin 2" · soft notes
const violin_soft = note("<~@39 [~ c#4!7] [d#4!8] ~@3 [~@5 c#4!3] [c#4!4 d#4!4] [d#4!4 ~@4] ~@95>")
  .s("gm_violin").gain(0.25)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  A B C D E F G H I J K L M N O M N P Q R S T U V S T U V S T U V S T U W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AI AJ
  AK AL AM AN AO AP AO AN AO AP AO AN AO AP AO AN AO AN AO AP AO AN AO AP AO AN AO AP AO AN AO AP AO AN AO AP AO AN AO
  AP AO AN AO AP AO AN AO AQ AR AS AT AU AV AW AX AQ AY AS AT AU AV AW AZ AQ AX AS AX AU AX AW AR BA AT AW AV BA AX BB
  AR BC AT BD AV BA AX BB AY BE@3
>`.pickRestart({
  A: "[c#3,g#3,b3,c#4,e4,g#4] ~ [c#3,g#3,b3,c#4,e4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4] ~", // C#m7 B
  B: "[a2,f#3,b3,c#4,e4,f#4] ~ [a2,f#3,b3,c#4,e4] ~ [a2,f#3,b3,c#4,e4] ~ [a2,f#3,b3,c#4,e4] ~", // F#m7
  C: "[b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4] ~ [c#3,g#3,b3,c#4,e4,g#4] ~ [c#3,g#3,b3,c#4,e4,g#4] ~", // B C#m7
  D: "[b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [a2,f#3,b3,c#4,e4,f#4] ~ [a2,f#3,b3,c#4,e4,f#4] ~", // B F#m7
  E: "[a2,f#3,b3,c#4,e4,f#4] ~ [a2,f#3,b3,c#4,e4,f#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~", // F#m7 B
  F: "[b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [c#3,g#3,b3,c#4,e4,g#4] ~ [c#3,g#3,b3,c#4,e4] ~", // B C#m7
  G: "[b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4] ~ [a2,f#3,b3,c#4,e4,f#4] ~ [a2,f#3,b3,c#4,e4] ~", // B F#m7
  H: "[a2,f#3,b3,c#4,e4] ~ [a2,f#3,b3,c#4,e4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4] ~", // F#m7 B
  I: "[c#3,g#3,b3,c#4,e4,g#4] ~ [c#3,g#3,b3,c#4,e4,g#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~", // C#m7 B
  J: "[a2,f#3,b3,c#4,e4,f#4] ~ [a2,f#3,b3,c#4,e4,f#4] ~ [a2,f#3,b3,c#4,e4,f#4] ~ [a2,f#3,b3,c#4,e4,f#4] ~", // F#m7
  K: "[b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~", // B
  L: "[c#3,g#3,b3,c#4,e4,g#4] ~ [c#3,g#3,b3,c#4,e4,g#4] ~ [a2,f#3,b3,c#4,e4] ~ [a2,f#3,b3,c#4,e4] ~", // C#m7 F#m7
  M: "[b2,f#3,b3,c#4,d#4] ~ [b2,f#3,b3,c#4,d#4] ~ [b2,f#3,b3,c#4,d#4] ~ [g#2,g#3,b3,c#4,d#4] ~", // B G#m
  N: "[c#3,g#3,b3,c#4,e4] ~ [c#3,g#3,b3,c#4,e4] ~ [b2,f#3,b3,c#4,d#4] ~ [b2,f#3,b3,c#4,d#4] ~", // C#m7 B
  O: "[c#3,g#3,b3,c#4,e4,g#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [a2,f#3,b3,c#4,e4] ~ [a2,f#3,b3,c#4,e4] ~", // C#m7 B F#m7
  P: "[c#3,g#3,b3,c#4,e4,g#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~ [a2,e3,b3,c#4,e4] ~ [a2,e3,b3,c#4,e4] ~", // C#m7 B A
  Q: "[a2,e3,b3,c#4,e4] ~ [a2,e3,b3,c#4,e4] ~ [b2,c#3,f#3,b3,c#4,d#4,f#4] ~@3", // A B
  R: "~ [b2,c#3,f#3,b3,c#4,d#4,f#4]!2 ~ [c#3,e3,g#3,b3,c#4,e4,g#4] ~ [g#2,e3,g#3,b3,c#4,e4,g#4] ~", // B C#m7
  S: "[c#3,e3,g#3,b3,c#4,e4,g#4] ~ [g#2,e3,g#3,b3,c#4,e4,g#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [f#2,d#3,f#3,b3,c#4,d#4,f#4] ~", // C#m7 B
  T: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [f#2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,c#3,f#3,b3,c#4,e4] ~ [f#2,c#3,f#3,b3,c#4,e4] ~", // B Bsus4 F#sus4
  U: "[b2,c#3,f#3,b3,c#4,e4] ~ [f#2,c#3,f#3,b3,c#4,e4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [f#2,d#3,f#3,b3,c#4,d#4,f#4] ~", // Bsus4 F#sus4 B
  V: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [f#2,d#3,f#3,b3,c#4,d#4,f#4] ~ [c#3,e3,g#3,b3,c#4,e4,g#4] ~ [g#2,e3,g#3,b3,c#4,e4,g#4] ~", // B C#m7
  W: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [f#2,d#3,f#3,b3,c#4,d#4,f#4] ~ [c#3,e3,g#3,b3,c#4,e4,g#4] ~ [c#3,e3,g#3,b3,c#4,e4] ~", // B C#m7
  X: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4] ~ [a2,c#3,f#3,b3,c#4,e4,f#4] ~ [a2,c#3,f#3,b3,c#4,e4] ~", // B F#m7
  Y: "[a2,c#3,f#3,b3,c#4,e4] ~ [a2,c#3,f#3,b3,c#4,e4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4] ~", // F#m7 B
  Z: "[c#3,e3,g#3,b3,c#4,e4,g#4] ~ [c#3,e3,g#3,b3,c#4,e4,g#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~", // C#m7 B
  AA: "[a2,c#3,f#3,b3,c#4,e4,f#4] ~ [a2,c#3,f#3,b3,c#4,e4,f#4] ~ [a2,c#3,f#3,b3,c#4,e4,f#4] ~ [a2,c#3,f#3,b3,c#4,e4,f#4] ~", // F#m7
  AB: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4] ~", // B
  AC: "[c#3,e3,g#3,b3,c#4,e4,g#4] ~ [c#3,e3,g#3,b3,c#4,e4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4] ~", // C#m7 B
  AD: "[a2,c#3,f#3,b3,c#4,e4,f#4] ~ [a2,c#3,f#3,b3,c#4,e4] ~ [a2,c#3,f#3,b3,c#4,e4] ~ [a2,c#3,f#3,b3,c#4,e4] ~", // F#m7
  AE: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4] ~ [c#3,e3,g#3,b3,c#4,e4,g#4] ~ [c#3,e3,g#3,b3,c#4,e4,g#4] ~", // B C#m7
  AF: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [a2,c#3,f#3,b3,c#4,e4,f#4] ~ [a2,c#3,f#3,b3,c#4,e4,f#4] ~", // B F#m7
  AG: "[a2,c#3,f#3,b3,c#4,e4,f#4] ~ [a2,c#3,f#3,b3,c#4,e4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~", // F#m7 B
  AH: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [c#3,g#3,b3,c#4,e4,g#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~", // B C#m7 B
  AI: "[a2,f#3,b3,c#4,e4] ~ [a2,f#3,b3,c#4,e4] ~ [b2,f#3,b3,c#4,d#4] ~ [b2,f#3,b3,c#4,d#4] ~", // F#m7 B
  AJ: "[b2,f#3,b3,c#4,d#4] ~ [g#2,g#3,b3,c#4,d#4] ~ [c#3,g#3,b3,c#4,e4,g#4] ~ [c#3,g#3,b3,c#4,e4] ~", // B G#m C#m7
  AK: "[b2,f#3,b3,c#4,d#4,f#4] ~ [b2,f#3,b3,c#4,d#4] ~ [c#3,g#3,b3,c#4,e4,g#4] ~ [b2,f#3,b3,c#4,d#4,f#4] ~", // B C#m7 B
  AL: "[a2,e3,b3,c#4,e4] ~ [a2,e3,b3,c#4,e4] ~ [a2,e3,b3,c#4,e4] ~ [a2,e3,b3,c#4,e4] ~", // A
  AM: "[b3,c#4,d#4,f#4,b4] ~ [b2,c#3,f#3,b3,c#4,d#4,f#4,b4]@2 ~@6 [b3,c#4,d#4,f#4,b4] ~ [b2,c#3,f#3,b3,c#4,d#4,f#4,b4]@2 ~@2, [b2,c#3,f#3] ~@4 [b2,c#3,f#3] ~@2", // B Bsus2
  AN: "[c#3,e3,g#3,b3,c#4,e4,g#4] ~ [g#2,e3,g#3,b3,c#4,e4,g#4] ~ [c#3,e3,g#3,b3,c#4,e4,g#4] ~ [g#2,e3,g#3,b3,c#4,e4,g#4] ~", // C#m7
  AO: "[b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [f#2,d#3,f#3,b3,c#4,d#4,f#4] ~ [b2,d#3,f#3,b3,c#4,d#4,f#4] ~ [f#2,d#3,f#3,b3,c#4,d#4,f#4] ~", // B
  AP: "[b2,c#3,f#3,b3,c#4,e4] ~ [f#2,c#3,f#3,b3,c#4,e4] ~ [b2,c#3,f#3,b3,c#4,e4] ~ [f#2,c#3,f#3,b3,c#4,e4] ~", // Bsus4 F#sus4 Bsus4 F#sus4
  AQ: "[b3,c#4,e4,g#4]@2 ~@2 [b3,c#4,e4,g#4]@2 ~@2 [b3,c#4,e4,g#4]@2 [b3,c#4,e4,g#4]@2 [b3,c#4,e4,g#4] ~@3, [c#3,e3,g#3]", // C#m7 C#m
  AR: "[b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4] ~@3 [b3,c#4,d#4,f#4]!5 ~@3, [b2,d#3,f#3]", // B
  AS: "[b3,c#4,e4]@2 ~@2 [b3,c#4,e4]@2 ~@2 [b3,c#4,e4]@2 [b3,c#4,e4] ~ [b3,c#4,e4]@2 ~@2, [a2,c#3,f#3]", // C#m7 F#m
  AT: "[b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4] ~ [b3,c#4,d#4,f#4]@2 ~@2 [b3,c#4,d#4,f#4]!4 [b3,c#4,d#4,f#4]@2 ~@2, [b2,d#3,f#3]", // B
  AU: "[b3,c#4,e4,g#4]@2 ~@2 [b3,c#4,e4,g#4]@2 ~@2 [b3,c#4,e4,g#4] ~ [b3,c#4,e4,g#4]@2 [b3,c#4,e4,g#4]@2 ~@2, [c#3,e3,g#3]", // C#m7 C#m
  AV: "[b3,c#4,d#4,f#4] ~ [b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4]@2 ~@2 [b3,c#4,d#4,f#4]!4 [b3,c#4,d#4,f#4]@2 ~@2, [b2,d#3,f#3]", // B
  AW: "[b3,c#4,e4] ~ [b3,c#4,e4] ~ [b3,c#4,e4]!3 ~, [a2,c#3,f#3]", // C#m7 F#m
  AX: "[b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4]@2 ~@2 [b3,c#4,d#4,f#4]!4 [b3,c#4,d#4,f#4]@2 ~@2, [b2,d#3,f#3]", // B
  AY: "[b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4] ~@3 [b3,c#4,d#4,f#4]!4 [b3,c#4,d#4,f#4]@2 ~@2, [b2,d#3,f#3]", // B
  AZ: "[b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4]@2 [b3,c#4,d#4,f#4]@2 ~@2 [b3,c#4,d#4,f#4]!5 ~@3, [b2,d#3,f#3]", // B
  BA: "[b3,c#4,e4,g#4] ~ [b3,c#4,e4,g#4] ~ [b3,c#4,e4,g#4]!3 ~, [c#3,e3,g#3]", // C#m7 C#m
  BB: "[b3,c#4,e4]@2 ~@2 [b3,c#4,e4]@2 ~@2 [b3,c#4,e4]@2 [b3,c#4,e4]@2 [b3,c#4,e4] ~@3, [a2,c#3,f#3]", // C#m7 F#m
  BC: "[b3,c#4,e4,g#4]@2 ~@2 [b3,c#4,e4,g#4]@2 ~@2 [b3,c#4,e4,g#4]@2 [b3,c#4,e4,g#4] ~ [b3,c#4,e4,g#4]@2 ~@2, [c#3,e3,g#3]", // C#m7 C#m
  BD: "[b3,c#4,e4]@2 ~@2 [b3,c#4,e4]@2 ~@2 [b3,c#4,e4] ~ [b3,c#4,e4]@2 [b3,c#4,e4]@2 ~@2, [a2,c#3,f#3]", // C#m7 F#m
  BE: "[[b3,c#4,e4,g#4] ~ [b3,c#4,e4,g#4] ~ [b3,c#4,g#4,b4]@20, [c#3,e3,g#3]]/3", // C#m7 C#7 C#m
})).s("gm_string_ensemble_1").gain(0.1)

// drums · kick
const kick = s("bd").struct("<~@11 A@7 B C D@26 E A@7 F D@84 F ~@2>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "~ x", D: "x!2", E: "x ~ x!2", F: "x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@19 A B@26 C ~@8 B@38 D E F E F E G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H ~@3
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x ~@2 x!2 ~@3 x ~ x!2", E: "x ~@3 x ~ x!3 ~ x ~ x ~ x!2",
  F: "x ~@3 x ~ x!3 ~@3 x ~ x!2", G: "x ~ x ~ x!3 ~", H: "x ~ x ~ x ~@3 x!5 ~@3",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@85 A B C B C B C B D ~@48>".pickRestart({
  A: "~@14 x!2", B: "x ~@5 x!3 ~ x ~ x ~ x!2", C: "x ~@5 x!3 ~@5 x!2", D: "x ~@2 x ~@4",
})).gain(0.15)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@19
  [~@8 x ~ x!3 ~@3]
  [x ~ x!3 ~@3 x ~ x!3 ~@3]!15
  [x ~ x!3 ~@11]
  ~@19
  [x ~ x!3 ~@3 x ~ x!3 ~@3]!84
  ~@3
>`).gain(0.25)

// drums · high tom
const high_tom = s("ht").struct("<~@19 [~@7 x] [~@3 x ~@3 x]!15 [~@3 x ~@4] ~@19 [~@3 x ~@3 x]!84 ~@3>").gain(0.25)

stack(banjo, recorder, violin, violin_2, violin_soft, string_ensemble_1, kick, snare, snare_soft, low_tom, high_tom)

More by Kate Bush