Strudelify
Babooshka cover art

1980 · Never for Ever

Babooshka

Kate Bush

KeyE♭ majorTempo160 bpm
0:00/0:00
// Babooshka — Kate Bush
// 160 bpm, 6/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 86 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/6)

// 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 · distortion guitar · "Electric Guitar"
const distortion_guitar = note("<~@14 A ~@8 B C D ~@2 D ~@22 E@2 D ~@2 D ~@2 D ~@11 D ~@2 D ~@11>".pickRestart({
  A: "c6 ~ c6 db6@2 ~@7, g6!2 ~@4, ~ db6@2 ~@9",
  B: "[db5,gb5,bb5,db6]@2 ~ [db5,gb5,bb5,db6]@2 ~ [db5,gb5,bb5,db6]@2 ~ [db5,gb5,bb5,db6]!2 ~", // Gb
  C: "[db5,gb5,bb5,db6]@2 ~ [db5,gb5,bb5,db6]!2 ~ [db5,gb5,bb5,db6]@2 ~ [db5,gb5,bb5,db6]@2 ~", // Gb
  D: "[bb4,eb5] ~ [db5,f5] ~", E: "[db5,gb5,db6]@2 ~ [db5,gb5,bb5]@2 ~ [db5,gb5,db6]@2 ~ [db5,gb5,bb5]@2 ~",
})).s("gm_distortion_guitar").gain(0.2).pan(0.2)

// chords · distortion guitar · "Electric Guitar" · soft notes
const distortion_guitar_soft = note("<~@14 [~@4 c6 ~ c6 db6@2 ~@3, ~@4 g6@2 g6@3 ~@3, ~@5 db6@2 ~@5] ~@71>")
  .s("gm_distortion_guitar").gain(0.1).pan(0.2)

// chords · banjo · "Balalaika"
const banjo = note("<~@4 A B A B C@3 D ~@66 A B A B E F G H>".pickRestart({
  A: "[b4,eb5]!6 ~@6 [bb4,db5]!6 ~@6", B: "[g4,bb4]!24", C: "eb4!24", D: "eb4!6 ~@18", E: "[b4,eb5]!8 ~@8 [db5,f5]!8",
  F: "~@8 [eb5,g5]!16", G: "[eb5,g5]!24", H: "[eb5,g5]!2 ~@22",
})).s("gm_banjo").gain(0.25).pan(0.7)

// chords · banjo · "Balalaika" · soft notes · Eb
const banjo_soft = note("<~@11 [~@6 eb4!18] [eb4!24] ~@72 [~@2 [eb5,g5]!22]>").s("gm_banjo").gain(0.1).pan(0.7)

// other · whistle · "Keyboard 1"
const whistle = note("<~@9 A@5 B ~@6 C ~@9 D ~ E F G H ~@12 I ~@36>".pickRestart({
  A: "eb5/5", B: "bb3 ~@3", C: "g4@3 bb4@7 ~@2", D: "g4 bb4 g4@2", E: "g4 eb4", F: "eb5 bb4", G: "gb4 eb4", H: "bb3 ~",
  I: "eb5@3 gb5",
})).s("gm_whistle").gain(0.4).pan(0.8)

// chords · rock organ · "Keyboard 2 RH"
const rock_organ = note(`<
  ~@20 A B C D E F G H F G I J ~@2 K L M N O P Q R S T U V W X W X C Y E F G H F G H F G H Z AA@2 Z AB@2 Z AC@2 AD AE AF
  AG AH ~@10
>`.pickRestart({
  A: "bb4 ab4", B: "g4", C: "[ab2,eb3,bb4] [f2,db3,db4,ab4]",
  D: "gb4@2 db4@2 db5@2 b3@3 [bb2,db4]@3, [ab2,eb3]@3 ~, b3 bb4", E: "[eb3,eb4]@2 [gb3,gb4]!2 [db4,db5]@2 [bb3,bb4]@6",
  F: "~ [eb4,gb4,bb4] ~ [db4,gb4,bb4,db5], eb3 db3", // Ebm Gb
  G: "~@2 [b3,eb4,gb4] [b3,eb4,gb4]@3 ~@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 [bb3,eb4,g4], ab2 g2", // B Eb
  H: "[b3,eb4,gb4]!2 ab2 [bb2,bb3,eb4,gb4], ab2 ~", I: "[ab2,b3,eb4] [f2,ab3,db4]", J: "[g2,eb3,bb3]",
  K: "[eb3,gb4,bb4,eb5]", L: "[db3,gb4,db5,gb5] [b2,gb4,b4,eb5]", M: "[g2,eb4,bb4,eb5]",
  N: "~ [gb4,b4,eb5]@2 ~ [ab4,db5,f5]@2, b2 bb2", O: "~ [gb4,b4,eb5]@2 ~ [f4,ab4,db5]@2, ab2 f3",
  P: "eb3@3 g3, [eb4,g4,bb4]", Q: "[eb3,bb3,eb4,gb4]", R: "[db3,ab3,db4,gb4] [b2,gb3,b3,eb4,gb4]",
  S: "[g2,eb3,bb3,eb4]", T: "[bb4,eb5,gb5] [bb4,eb5]@2 [ab4,db5,f5,ab5] [ab4,db5,f5]@2, b2 bb2",
  U: "[gb4,b4,eb5] [gb4,b4,eb5]@2 ~ [f4,ab4,db5]@2, ab2 f2", V: "[g2,eb4,g4,bb4]", W: "[eb3,bb4] [db3,ab4]",
  X: "[eb3,g4]", Y: "eb4@2 gb4@2 db5@2 ~@3 [bb2,db4]@3, [ab2,eb3,b3]@3 ~, ~ bb4", Z: "[eb3,bb3,gb4] ~@11",
  AA: "[[b3,eb4,gb4]@3 [b3,eb4,gb4]@3 [bb3,eb4,g4]@2 g4 [bb3,eb4,g4]@2 ~@3 [b3,eb4,gb4] [b3,eb4,gb4]@2 [b3,eb4,gb4] ab2@3 [bb2,bb3,eb4,gb4]@3, ab2 g2 ab2 ~, ~@11 [b3,eb4,gb4]@3 ~@10]/2", // B Eb B Ebm B
  AB: "[[b3,eb4,gb4]@3 [b3,eb4,gb4]@3 [bb3,eb4,g4]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 ~@3 [b3,eb4,gb4] [b3,eb4,gb4]@2 [b3,eb4,gb4] ab2@3 [bb2,bb3,eb4,gb4]@3, ab2 g2 ab2 ~, ~@11 [b3,eb4,gb4]@3 ~@10]/2", // B Eb B Ebm B
  AC: "[[b3,eb4,gb4]@3 [b3,eb4,gb4]@3 [bb3,eb4,g4]@2 [bb3,eb4,g4] [bb3,eb4,g4]@2 ~@3 [b3,eb4,gb4] [b3,eb4,gb4]@2 [b3,eb4,gb4] b2@3 [db3,bb3,eb4,gb4]@3, ab2@2 g2@2 ab2 bb2 ~@2, ~@11 [b3,eb4,gb4]@3 ~@10]/2", // B Eb B Ebm7 B
  AD: "[bb3,eb4,gb4] [gb4,eb5] [gb4,db5] [db4,gb4,bb4], eb3 db3", // Ebm Gb5 Gb
  AE: "[ab2,b3,eb4,gb4]@3 b3 ab3 eb3 [bb3,eb4,g4]@2 [bb3,e4] ~@2 [bb3,db4], ~ [eb4,gb4] g2!2", // Abm7 Eb Bbdim Bbm Ebm
  AF: "[b3,eb4,gb4]!2 [ab2,b3,eb4,gb4] [bb2,b3,eb4,gb4], ab2 ~", // B Abm7 Bmaj7
  AG: "[bb3,eb4,gb4] [gb4,bb4,eb5] [gb4,bb4,db5] [db4,gb4,bb4], eb3 db3", // Ebm Gb
  AH: "[b3,eb4,gb4]@3 [b3,eb4,gb4]@3 [bb3,eb4,g4]@2 [bb3,eb4] ~@2 [bb3,eb4], ab2 g2", // B Eb Eb5
})).s("gm_rock_organ").gain(0.36).pan(0.8)

// chords · epiano1 · "Keyboard 3 RH"
const epiano1 = note("<A B A B C D C D ~@68 E F G H G H I@4>".pickRestart({
  A: "[ab3,eb4] [f3,db4]", B: "[g3,eb4]", C: "[ab3,eb4,b4] [f3,db4,bb4]", D: "[g3,eb4,g4]", E: "eb4 db4", F: "eb4",
  G: "[eb4,b4] [db4,bb4]", H: "[eb4,g4]", I: "[b4 [ab4,db5] [g4,eb5]@4]/4",
})).s("gm_epiano1").gain(0.4).pan(0.3)

// chords · piano · "Piano RH"
const piano = note(`<
  A B C D E F E F G H I J K L G H I J M N M N M O P Q R S Q T U V E F G W X J Y N G H X J Y L Y L Y N Y Z P Q AA S Q AB
  S Q AB S AC AD AE AC AD AE AC AF AG AH AI AJ AH AK A V AL AM AL AM AN@4
>`.pickRestart({
  A: "[ab2,b3,eb4] [f2,ab3,db4]", B: "~@6 g4 ab4 bb4 db5@3, [g2,eb3,bb3]", C: "[ab3,b4,eb5] [f3,ab4,db5]",
  D: "[eb4,bb4,eb5]@6 g4 ab4 bb4 db5@3, g3", E: "[ab3,b4,eb5] [f2,f3,ab4,db5]",
  F: "[eb4,bb4,eb5]@6 g4 ab4 bb4 db5@3, [g2,g3]", G: "[eb3,bb3,eb4,gb4]",
  H: "[db3,ab3,db4,gb4]@2 ~ [b2,gb3,b3,eb4,gb4]@3", I: "[eb3,g3,bb3,eb4]@8 ~ g3 bb3 eb4, g2, ~@2 eb3",
  J: "[b2,eb4,gb4,bb4] [bb2,db4,f4,ab4]", K: "[ab2,b3,eb4,gb4] [f2,f3,ab3,db4]",
  L: "eb3@6 ~@3 [g3,eb4] bb3 eb4, g2, [g3,bb3,eb4]@3 ~, ~@3 eb3@2 ~", M: "[ab2,b3,eb4,gb4] [f3,ab3,db4]",
  N: "eb3@6 eb3@3 [g3,eb4] bb3 eb4, g2, [g3,bb3,eb4]@3 ~", O: "[b3,gb4]@3 [bb2,gb4], ab2, ~@9 db4 ~@2",
  P: "[b2,eb4,gb4]", Q: "~@3 [bb3,eb4,gb4]@3 ~@3 bb3@2 [bb2,bb3], eb3@6 db3@5 ~, ~@3 [db4,gb4]",
  R: "~@5 [ab2,ab3] ~@2 [bb3,eb4,g4]@3 [g2,g3], [ab2,ab3]@5 ~ [g2,g3]@5 ~, ~ [b3,eb4,gb4] ~@2", // Ab Eb G Ab G B
  S: "~@5 [ab2,ab3] ~@2 ab3 bb3 ab3 gb3, [ab2,ab3]@5 ~@7, ~ [b3,eb4,gb4] ~ [eb4,gb4]", // Ab B Ebm
  T: "~@5 [ab2,ab3] ~@2 [bb3,eb4,g4]@3 ~, [ab2,ab3]@5 ~ [g2,g3]@6, ~ [b3,eb4,gb4] ~@2", // Ab Eb Ab G B
  U: "[ab2,ab3,b3,eb4] [f2,ab3,db4]", V: "bb3@6 g4 ab4 bb4 db5@3, [g2,eb3]", W: "[db3,ab3,db4,gb4] [b2,gb3,b3,eb4,gb4]",
  X: "eb3@8 ~ [g3,eb4] bb3 eb4, g2, [g3,bb3,eb4]@3 ~, ~@2 eb3", Y: "[ab2,b3,eb4,gb4] [f2,ab3,db4]",
  Z: "[ab2,b3,gb4]@3 [bb2,db4,gb4]", // Abm7 Gb
  AA: "~@5 [ab2,ab3] [g2,g3]@3 [g2,g3]@2 eb3, [ab2,ab3]@5 ~@7, ~ [b3,eb4,gb4] ~ [bb3,eb4,g4]", // Ab G Ab B Eb
  AB: "~@5 [ab2,ab3] ~@5 eb3, [ab2,ab3]@5 ~ [g2,g3]@5 ~, ~ [b3,eb4,gb4] ~ [bb3,eb4,g4]", AC: "[eb3,eb4] ~@11",
  AD: "[b3,eb4,gb4]@3 ~@2 [ab2,ab3] [bb3,eb4,g4]@3 ~@2 eb3, [ab2,ab3]@5 ~ [g2,g3]@5 ~, ~ [b3,eb4,gb4] ~ [bb3,eb4,g4]", // B Ab Eb Ab G B Eb
  AE: "[b3,eb4,gb4]@3 ~@2 [ab2,ab3] ~@2 ab3 bb3 ab3 gb3, [ab2,ab3]@5 ~@7, ~ [b3,eb4,gb4]!2 [eb4,gb4]", // B Ab B Ebm
  AF: "[ab2,ab3,b3,eb4,gb4]@3 [ab2,ab3]@2 [ab2,ab3] [bb3,eb4,g4]@3 ~@2 eb3, ~@3 [b3,eb4,gb4]@3 [g2,g3]@5 ~, ~@3 [bb3,eb4,g4]", // Abm7 Ab Eb B G Eb
  AG: "[ab2,b3,eb4,gb4] [bb2,b3,eb4,gb4] [b2,b3,eb4,gb4] [db3,b3,eb4,gb4]", // Abm7 Bmaj7 B
  AH: "[bb3,eb4,gb4]!2 [bb3,db4,gb4]!2, eb3 db3", AI: "[ab2,ab3,b3,eb4,gb4]!2 [g2,g3,bb3,eb4,g4] [g2,g3,bb3,e4,g4]",
  AJ: "ab2@2 ab3 ab2@2 ab3 ab2@2 ab3 bb3 ab3 gb3, [b3,eb4,gb4]!3 [eb4,gb4]", // B Ebm
  AK: "[ab2,ab3,b3,eb4,gb4]!2 [g2,g3,bb3,eb4,g4]!2", AL: "[ab2,ab3,b4,eb5] [f2,f3,ab4,db5]",
  AM: "[eb4,bb4]@6 g4 ab4 bb4 db5@3, [g2,g3]", AN: "[[ab2,ab3,b4,eb5] [f2,f3,ab4,db5] [eb2,eb4,bb4]@4]/4",
})).s("gm_piano").gain(0.4).pan(0.2)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@4 A B C B D E F G H F D I J K L M N O P Q R S T U S T N V N J W X Y Z AA J D E AB AC AD AE N AF AG AH AI AJ AK S AL
  AM S AL AN S AL AO AP AQ AR AP AQ AS AP AQ AT AU AV AW AX AY N J AZ F BA F BB@4
>`.pickRestart({
  A: "eb3 db3", B: "bb2", C: "b2 bb2 ab2 ab2@3 db3@3 db3 eb3 b2", D: "eb3", E: "db3 b2", F: "g2", G: "b2@6 bb2@5 eb3",
  H: "ab2@5 db3 f2@5 db3", I: "db3 [b2,ab3]", J: "g3", K: "b2@2 bb3 b3@3 bb2@2 bb3@3 db4", L: "ab2@2 ab3@3 ~ f2@5 db3",
  M: "g2 eb3@5", N: "ab3 f3", O: "g3@9 ~@2 eb3", P: "ab3@5 db4 f3@6", Q: "ab2@3 bb2", R: "b2@5 b2!2 b2@2 db3@3",
  S: "eb3@3 eb4 bb3 gb4 f4@3 ~@2 bb3", T: "ab3@10 ~ g3@10 eb4@2 ~, ~@5 eb4 ~@6", U: "ab3@6 ab3!3 bb3!3", V: "[eb3,g3]",
  W: "eb4", X: "[db4,f4] [b3,gb4]", Y: "[g3,bb4]@11 db5", Z: "bb4@2 gb4@3 db5 ab4@2 f4@3 eb4",
  AA: "gb4@2 eb4@4 ab4 f4 db4@2 db4 ab3", AB: "g3@3 ~", AC: "b2 bb3@2 bb2 bb3@2", AD: "ab2 ab3@2 f2@3",
  AE: "~ eb3@3, g2 ~@2", AF: "g3@9 eb4 bb3 eb3", AG: "ab3@5 db4 f3@3 f3!3", AH: "g3@8 eb4@2 bb3 g3",
  AI: "ab3@5 db4 f3@5 eb4", AJ: "[ab2,ab3]@3 [bb2,ab3]", AK: "[b2,b3]@9 db4!3", AL: "ab3@5 ab3 g3@5 eb4",
  AM: "ab3@6 eb4 ab3!2 bb3@3", AN: "ab3@5 eb3 ab3@2 ab3 bb3!3", AO: "ab3@6 db4 bb3 ab3 bb3 db4 bb3", AP: "eb3 ~@10 eb3",
  AQ: "ab2@6 g2@5 eb4", AR: "[ab2,ab3]@3 bb2@2 ab2 ~@2 ab2 bb2 ab2 bb2", AS: "ab2@6 ab2@2 ab2 bb2!3, ab3 ~@3",
  AT: "ab2!3 bb2@2 ab2 b2!3 db3!3", AU: "eb3 ~@2 eb4 bb3 gb4 f4 ~@2 eb4 db4 bb3", AV: "ab3@3 ~ eb4 ab3 g3@5 eb4",
  AW: "ab3@2 ab3 bb3!3 b3!3 db4 bb3!2", AX: "eb4@3 ~ bb3 gb4 f4@3 ~@2 bb3", AY: "ab3@5 g3 g3@6",
  AZ: "b2 bb2 ~ ab2@3 db3@6", BA: "b2 ab2 db3@2", BB: "[b2 ab2 db3@2 eb3@8]/4",
})).s("gm_fretless_bass").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@13 A B ~@2 C D B E B@2 F@2 G D@2 G D ~@6 A H@2 E B ~@2 D@2 B E@3 B@2 F@2 D@2 G D@2 I D@2 G J D@2 K D@2 J D F D@2 G@2
  D ~@10
>`.pickRestart({
  A: "~@11 x", B: "x", C: "~ x", D: "x!2", E: "x ~@10 x", F: "x!4", G: "x ~@5 x ~@4 x", H: "x ~@4 x!2 ~@4 x",
  I: "x ~@2 x!2 ~", J: "x ~@2 x", K: "x ~ x",
})).gain(0.4).pan(0.6)

// drums · snare
const snare = s("sd").struct(`<
  ~@19 A B C B ~@2 D@5 ~@16 B@3 C B ~@2 D@9 ~ D@2 A D@2 ~ D ~ D@2 E D@2 ~@10
>`.pickRestart({
  A: "~@3 x", B: "~ x", C: "~@6 x ~@4 x", D: "~ x ~ x", E: "~@5 x ~@12 x ~@5",
})).gain(0.4).pan(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@24 [~ x!3] ~@22 [~@5 x ~@6]!2 ~@19 [~ x] ~@17>").gain(0.4).pan(0.6)

// drums · hihat
const hihat = s("hh").struct("<A@7 B ~@4 C ~ D A ~@5 E@2 ~@17 A@2 ~@7 E@2 ~@35>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4 x ~@2 x", C: "x", D: "~@3 x", E: "~@5 x ~@6",
})).gain(0.4).pan(0.6)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@2 B C ~@3 D E B ~@11 A ~@2 F ~@3 G@2 ~@3 H I@2 ~@31 A ~@2 F J ~ K@2 L ~
>`.pickRestart({
  A: "x", B: "~ x ~@2 x!2", C: "~@5 x ~@2 x ~ x ~", D: "~ x ~@2", E: "~@2 x", F: "~@23 x", G: "~ x ~@2 x ~",
  H: "~ x ~ x", I: "~ x!2 ~ x!2", J: "~@11 x ~@11 x", K: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x",
  L: "x!2 ~ x!3 ~ x ~@16",
})).gain(0.4).pan(0.6)

// drums · mid tom
const mid_tom = s("mt").struct("<~@51 A B ~@9 C ~@2 C ~@2 D ~ E ~@15>".pickRestart({
  A: "~@9 x!3", B: "x!12", C: "~@17 x ~@6", D: "~@8 x ~@8 x ~@6", E: "~@2 x!10",
})).gain(0.4).pan(0.6)

// drums · crash
const crash = s("cr").struct(`<
  ~@25 A@2 ~ A@2 B ~@20 A ~ A@2 ~ A@2 ~ A@2 ~@2 A ~@2 A ~@2 A ~ A@2 ~ A@2 B ~@9
>`.pickRestart({
  A: "x", B: "~ x",
})).gain(0.4).pan(0.6)

// drums · high tom
const high_tom = s("ht").struct("<~@51 A B ~@9 C ~@5 D ~ E ~@15>".pickRestart({
  A: "~@9 x!3", B: "x!12", C: "~@16 x!2 ~@6", D: "~@4 x ~@11 x!2 ~@6", E: "~@2 x!10",
})).gain(0.4).pan(0.6)

// drums · ride
const ride = s("rd").struct(`<
  A@7 B C A@2 D@2 E A@5 F G H D I ~@7 A@7 J A@4 H@4 D@4 ~@25 K F L A E I ~@2 M ~
>`.pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~ x", B: "x ~@5 x ~@5 x ~@5 x ~@4 x", C: "~@3 x ~@5 x ~ x", D: "x ~@2 x ~@2 x ~@2 x ~ x",
  E: "x ~@4 x!2 ~@4 x", F: "x ~@2 x ~ x!2 ~@2 x ~@2", G: "x ~@2 x ~@2 x ~ x!2 ~@2", H: "x!4", I: "x",
  J: "x ~@2 x!4 ~@2 x!3", K: "~ x", L: "x ~ x!2 ~ x!2 ~@2 x ~ x", M: "~ x ~",
})).gain(0.4).pan(0.6)

// drums · tambourine
const tambourine = s("tb").struct("<~@21 A ~@3 B@5 ~@16 A@6 B@10 ~ B@2 ~ B@2 ~ B@4 C B@2 ~@10>".pickRestart({
  A: "~ x", B: "~ x ~ x", C: "~@5 x ~@12 x ~@5",
})).gain(0.4).pan(0.6)

stack(
  distortion_guitar, distortion_guitar_soft, banjo, banjo_soft, whistle, rock_organ, epiano1, piano, bass, kick, snare,
  low_tom, hihat, open_hat, mid_tom, crash, high_tom, ride, tambourine
)

More by Kate Bush