Strudelify

Fat Bottomed Girls

Queen

KeyD majorTempo90 bpm
0:00/0:00
// Fat Bottomed Girls — Queen
// 90 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "DISTORTION" distortion guitar (copy of ch 6 "OVERDRIVE" overdriven guitar)
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~@8 A@5 B A C D E A F G H I J K L M N O P Q R S T U V U N ~@4 W X Y Z AA AB AC AD@2 AE AF AG AH AI AJ AK@2 AL@2 AM AN
  AO AM AP AM AN AO AM AP AM AP AQ
>`.pickRestart({
  A: "d1 ~@3 d1 ~@3 d1 ~@3 d1 ~@3", B: "a1 ~@3 a1 ~@3 a1 ~@3 a1 ~@3", C: "g1 ~@3 g1 ~@3 g1 ~@3 g1 ~@3",
  D: "d1 ~@3 d1 ~@3 a1 ~@3 a1 ~@3", E: "d1 ~@15", F: "d1 ~@13 [c2,d2] [f1,g1,a1]",
  G: "[d1,e1] ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] d1@2 ~ d1 c2 a1 g1@2", // Dsus2 F#maj7
  H: "d1@2 ~ d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] c2 a1 f1@2 d1@2 ~@2", // F#maj7
  I: "d1 ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] d1@2 ~ d1 c2 ~ b1 ~", // F#maj7
  J: "a1 ~@2 [a1,e2] [g2,a2] [f2,f#2,g2] [d2,d#2,e2] [c2,c#2] a1@2 ~ a1 f2@2 d2@2", // A5 Gsus2 C#maj7
  K: "d1 ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] d1@2 ~ d1 c2 a1 g1@2", // F#maj7
  L: "g1 ~@2 g1 g2 [d#2,e2,f2] [c2,c#2,d2] [a#1,b1] g1@2 ~ g1 f2@2 d2@2", // Bmaj7
  M: "d1 ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] a1@2 ~ a1 g1 a1 f1@2", N: "d1",
  O: "d1@3 d1 d2 d1 ~@2 d1@3 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", P: "c2@3 c2!3 ~@2 b1@3 b1 f1@2 d1 ~",
  Q: "d2@3 d1 d2 d1 ~@2 d1@3 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", R: "c2@3 c2 c2@2 b1@2 a1@3 a1 f1@2 d1 ~",
  S: "d2@3 d1 d2 d1@3 d1@3 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", T: "g1@3 g1!3 ~@2 g1@3 g1 f1@2 d1 ~",
  U: "d2@3 d1 d2 a1 c2@2 a1@3 a1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", V: "d2@3 d1 d2 a1 f1@2 g1@3 g1 f1@2 d1@2",
  W: "~@8 d1 ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", // F#maj7
  X: "d1@2 ~ d1 c2 a1 g1@2 d1@2 ~ d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", // F#maj7
  Y: "c2@2 b1@2 a1@2 f1@2 d1 ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", // F#maj7
  Z: "d1@2 ~ d1 c2 ~ b1 ~ a1 ~@2 [a1,e2] [g2,a2] [f2,f#2,g2] [d2,d#2,e2] [c2,c#2]", // A5 Gsus2 C#maj7
  AA: "a1@2 ~ a1 f2@2 d2@2 d1 ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", // F#maj7
  AB: "d1@2 ~ d1 c2 a1 g1@2 g1 ~@2 g1 g2 [d#2,e2,f2] [c2,c#2,d2] [a#1,b1]", // Bmaj7
  AC: "g1@2 ~ g1 f2@2 d2@2 d1 ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1]", // F#maj7
  AD: "[a1@2 ~ a1 g1 a1 f1@2 d1@16 d1@3 d1 d2 d1 ~@2]/2",
  AE: "d1@3 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] c2@3 c2!3 ~@2", AF: "b1@3 b1 f1@2 d1 ~ d2@3 d1 d2 d1 ~@2",
  AG: "d1@3 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] c2@3 c2 c2@2 b1@2", AH: "a1@3 a1 f1@2 d1 ~ d2@3 d1 d2 d1@3",
  AI: "d1@3 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] g1@3 g1!3 ~@2", AJ: "g1@3 g1 f1@2 d1 ~ d2@3 d1 d2 a1 c2@2",
  AK: "[a1@3 a1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] d2@3 d2 d1@2 g1@4 ~ g1 f1@2 d1@2 d2@3 d1 d2 a1 c2@2]/2", // F#maj7
  AL: "[a1@3 a1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] d1@16 ~@8]/2", AM: "d2@3 d1 d2 d1 ~ d1 d1@2 ~ d1 c2 a1 g1@2",
  AN: "d1@2 ~ d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] c2@2 b1@2 a1@2 f1@2", // F#maj7
  AO: "d1 ~@2 d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] d1@2 ~ d1 c2@2 a1 ~", // F#maj7
  AP: "d1@2 ~ d1 d2 [a#1,b1,c2] [g1,g#1,a1] [f1,f#1] d1@2 ~ d1 c2 a1 g1@2", AQ: "d1 ~",
})).s("gm_fretless_bass").gain(0.34)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@7 A B@2 C D C E F G H I F J K D C E F G H L M N O P Q R S@2 T U V W V X@8 Y@3 Z@2 AA@3 AB@4 C D C D C D C D C D C AC
  ~
>`.pickRestart({
  A: "~@5 [g2,g3] [f2,f3] [d2,d3]", // G F D
  B: "[[d3,a3]@3 [a3,d4] a3 ~ d4!2 a3 ~ d4 [a3,d4] a3 ~ d4 [a3,d4] d4@2 d4 [a3,d4] a3 a3@2 d4 [d3,a3,d4] [d3,g3,e4]@2 e4 g3 ~@2 a3, [d2,a2], d4 ~ d3@2 d3@2 d3@2 [d3,a3]@2 [d3,d4]@2 ~@2 d3@2, ~@2 d4 ~ d4 ~ d4 ~@7 e4 d4, ~@5 a3@3 ~ a3@2 ~@2 a3@2 ~@14 g3@2 ~]/2", // D5 Em7 D5 D
  C: "[d3,a3,d4]@3 f#4 a3 ~ d4!2 a3 ~ [c3,c4]@2 [b2,b3] ~ [f2,f3] [f#2,f#3], [d2,a2]@7 ~, f#4@2 ~@2 [d3,f#4]@4 [d3,d4]@2 ~@3 [a2,a3]@3, ~@2 d4 ~ f#4@4, ~@5 a3@3 ~ a3@4 ~@3", // D5 C B F F# D5 D A
  D: "[d4,f#4]@2 [d4,f#4] [a3,d4,f#4] a3 a3@2 [d4,f#4] [d3,a3,d4,f#4] [d3,g3,e4]@2 e4 g3 ~@2 a3, d2, [d3,a3] [d3,d4,f#4] ~ d3, ~@6 e4 d4, ~@13 g3@2 ~", // D Em7 D5 D
  E: "e4@2 e4 [a3,e4] a3 a3@2 e4 [e3,a3,e4] [e3,a3,e4]@2 e4 [f2,a2,f3,a3,e4] ~ [d2,a2]@2, a2@3 ~, [e3,a3] [e3,e4] ~@2", // A5 Fmaj7 D5 A5 E
  F: "[d3,a3]@3 [a3,d4] a3 ~ d4!2 a3 ~ d4 [a3,d4] a3 ~ d4 [a3,d4], [d2,a2], d4 ~ d3@2 d3@2 d3@2, ~@2 d4 ~ d4 ~ d4 ~, ~@5 a3@3 ~ a3@2 ~@2 a3@2 ~", // D5
  G: "[f2,f3] ~@2 g3!2 ~ b3!2 g3 ~ b3 [g3,b3] [f2,d3,f3,b3]@2 [d2,a2]@2, d3!3 ~, ~ [g2,g3]@2 ~@2 g3@3 ~ g3@2 ~@5, ~ g2@5 ~@2, ~ b3!2 ~ b3 ~@3", // F G Bdim D5 G
  H: "[d3,a3,d4]@4 ~@2 [c3,c4] [c#3,c4] [e3,a3,e4] [e3,a3,e4]@2 e4 [f2,f3,a3,e4]@2 [d2,a2,d3]@2, [d2,a2] ~, ~@4 [d3,a3,d4]@2 ~@2 a2@5 ~@3, ~@5 a3@3 ~@8", // D5 C C#maj7 A5 Fmaj7 D5
  I: "[a3,d4]@4 ~ [g2,g3] [f2,f3] [d2,d3], d3@5 ~@3, [d2,a2] ~@15", J: "[d2,a2,d3,a3,d4] ~@15",
  K: "[a3,d4]@3 f#4 a3 ~ d4!2 a3 ~ [c3,c4]@2 [b2,b3] ~ [f2,f3] [f#2,f#3], [d2,a2]@7 ~, f#4@2 ~@2 [d3,f#4]@4 [d3,d4]@2 ~@3 [a2,a3]@3, ~@2 d4 ~ f#4@4, ~@5 a3@3 ~ a3@4 ~@3", // D5 C B F F# D5 D A
  L: "[d3,a3,d4], [d2,a2] ~@15", M: "d3@7 ~@5 d4@4, d4@3 ~, a3@9 a3@7, ~@7 d3@4 d3@5",
  N: "[c3,g3,c4]@8 [g2,g3]@3 g2 [f2,f3] [g2,g3] [d2,d3]@2, ~ b3, ~@4 d3@3 ~", // C5 G F G D
  O: "a3@9 a3@2 ~ d4@2 d4@2, [d3,d4]@11 d3@5, ~@3 a3", // D
  P: "[g2,c3,c4]@3 ~@3 c4@2 e3@6 e3@2, g3 ~, ~@3 c4@3 ~@10, ~ [g2,c3] [a2,a3,e4]@2", // C5 A5
  Q: "d3@6 ~@3 a3@2 ~ [a3,d4]@2 [a3,d4] [f#3,g3,g#3,b3,c4,c#4], d4@3 ~, a3 ~@5 a3@3 ~@7, ~@7 d3@4 d3@5", // D5
  R: "[e3,a#3] ~@6 c3@5 c3@4, [g2,g3,b3], d3@7 ~@9", // Edim G
  S: "[[d3,a3,d4]@6 [d3,g#3,a3,c#4,d4] [f3,f#3,g3,a#3,b3,c4] a3@3 ~@3 a2@2 ~@4 a3@4 f2 g2!3 ~@2 [f#3,g3,c#4] [e3,f3,a#3,b3,c4], ~ e3 [d3,d4] d3, ~@4 a2@3 ~@7 g2@2, ~@8 b2 ~@2 a3@9 ~@4 [g3,d4]@6 ~@2]/2", // D5 Dmaj7 F# D G5
  T: "d3@4 ~@3 d4 a2@4 a2@2 ~ a2, [a3,d4]@3 a3@4 ~, ~ d3 e4@2, ~@4 e3@3 [e3,a3]", // D5 A5
  U: "d4 ~ [d3,a3]!2, [d3,a3] ~, ~ d4@3", // D5
  V: "[g3,d4]@4 [g3,d4]@4 [d3,a3,d4,f#4]@4 [d3,a3,d4,f#4]@3 [d4,f#4], [g2,d3] ~", // G5 D G5
  W: "[a2,e3,a3,e4] a2!2 [d3,a3,f#4]@5, ~ [e3,a3,e4]@2 ~@5", // A5 D A5
  X: "[[a2,e3,a3,e4]@2 a2@2 a2@2 [g2,d3,g3,d4]@18 [d3,a3,d4]@3 f#4 a3 ~ d4!2 a3 ~ [c3,c4]@2 [b2,b3] ~ [f2,f3] [f#2,f#3] [d4,f#4]@2 [d4,f#4] [a3,d4,f#4] a3 a3@2 [d4,f#4] [d3,a3,d4,f#4] [d3,g3,e4]@2 e4 g3 ~@2 a3 [d3,a3,d4]@3 f#4 a3 ~ d4!2 a3 ~ [c3,c4]@2 [b2,b3] ~ [f2,f3] [f#2,f#3] e4@2 e4 [a3,e4] a3 a3@2 e4 [e3,a3,e4] [e3,a3,e4]@2 e4 [f2,a2,f3,a3,e4] ~ [d2,a2]@2 [d3,a3]@3 [a3,d4] a3 ~ d4!2 a3 ~ d4 [a3,d4] a3 ~ d4 [a3,d4] [f2,f3] ~@2 g3!2 ~ b3!2 g3 ~ b3 [g3,b3] [f2,d3,f3,b3]@2 [d2,a2]@2 [d3,a3,d4]@4 ~@2 [c3,c4] [c#3,c4], ~@2 [e3,a3,e4]@4 ~@18 [d2,a2]@14 ~@2 d2@16 [d2,a2]@14 ~@18 [d2,a2]@16 ~ [g2,g3]@2 ~@2 g3@3 ~ g3@2 ~@10 a3@3, ~@24 f#4@2 ~@2 [d3,f#4]@4 [d3,d4]@2 ~@3 [a2,a3]@3 [d3,a3]@4 [d3,d4,f#4]@4 ~@4 d3@4 ~@4 [d3,f#4]@4 [d3,d4]@2 ~@3 [a2,a3]@3 a2@12 ~@9 a3@3 ~ a3@2 ~@2 a3@2 ~@3 g2@10 ~@4 [d2,a2]@8, ~@14 d4 ~ f#4@4 ~@6 e4 d4 f#4 ~ d4 ~ f#4@4 ~@8 d4 ~ d4 ~ d4 ~ d4 ~@2 b3!2 ~ b3 ~@7, ~@29 a3@3 ~ a3@4 ~@16 g3@2 ~@6 a3@3 ~ a3@4 ~@3 [e3,a3]@4 [e3,e4]@4 ~@12 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 ~@8 [d3,a3,d4]@2 ~@2]/8", // A5 G5 D5 C B F F# D …
  Y: "[[e3,a3,e4] [e3,a3,e4]@2 e4 [f2,f3,a3,e4]@2 [d2,a2,d3]@2 [a3,d4]@8 ~@2 [g2,g3]@2 [f2,f3]!2 [d2,d3]!2 d3@7 ~@5 d4@4 [c3,g3,c4]@8, a2@5 ~@3 d3@10 ~@6 d4@12 ~@12, ~@8 [d2,a2] ~@15 a3@9 a3@7 ~@8, ~@31 d3@4 d3@5 ~@8]/3", // A5 Fmaj7 D5 G F D C5 D5
  Z: "[[g2,g3]@3 g2 [f2,f3] [g2,g3] [d2,d3]@2 a3@9 a3@2 ~ d4@2 d4@2 [g2,c3,c4]@3 ~@3 c4@2, b3@8 ~@11 d3@5 ~@3 c4@3 ~@2, d3@3 ~ [d3,d4]@6 a3@2 g3@4, ~@7 [g2,c3]]/2", // G F G D C5 D C5
  AA: "[e3@6 e3@2 d3@6 ~@3 a3@2 ~ [a3,d4]@2 [a3,d4] [f#3,g3,g#3,b3,c4,c#4] [e3,a#3] ~@6 c3@5 c3@4 [d3,a3,d4]@6 [d3,g#3,a3,c#4,d4] [f3,f#3,g3,a#3,b3,c4], [a2,a3,e4]@2 d4@3 ~@7, ~@8 a3 ~@5 a3@3 ~@7 d3@7 ~@17, ~@15 d3@4 d3@5 [g2,g3,b3]@16 ~@8]/3", // D5 Edim D5 Dmaj7 A5 G
  AB: "[a3@3 ~@3 a2@2 ~@4 a3@2 [d3,g3,d4]@8 [d3,f#3,g3,c#4] [e3,f3,a#3,b3,c4] d3@4 ~@3 d4 a2@4 a2@2 ~ a2 [d2,a2,d3,a3,d4]@24, e3@4 [d3,d4]@3 ~@7 d3@2 e3@3 [e3,a3] ~@12, a2@3 ~@4 g2@5 ~@3 a3@4 ~@13, b2 ~@2 a3@9 ~@12 [a3,d4]@7 ~ e4@8 ~@24]/4", // G5 Dmaj7 D5 D A5 D5
  AC: "[d4,f#4]@2 [d4,f#4] [a3,d4,f#4] a3 a3@2 [d4,f#4] [d3,a3,d4,f#4] [d3,g3,e4]@2 e4 g3 ~ d4@2, d2, [d3,a3] [d3,d4,f#4] ~ d3, ~@6 e4 ~, ~@13 g3@2 ~", // D Em7 D5 D
})).s("gm_overdriven_guitar").gain(0.17).pan(0.4)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@29 A ~ A ~ A ~ A ~@8 B ~ B ~ B ~@3 B ~ B ~ B ~ C ~@3 A ~ A ~@2 A ~ A ~@2 A ~
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4", C: "~@3 x ~@12",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@28 A@9 B ~@4 C A@6 D C A@8 D ~ A@12 ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x!2 ~@2 x ~@3 x ~@3", C: "~@3 x", D: "~ x ~@2",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@27 [~@12 x!3 ~] ~@13 [~@5 x ~@2] [~@3 x!2 ~ x!2 ~@8] ~@7 [x!2 ~ x!3 ~ x ~@8] ~@23>")
  .gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct("<~@27 A ~@9 B ~@3 C D ~@6 E F ~@23>".pickRestart({
  A: "~@2 x!6 ~ x!2 ~@5", B: "~@6 x!2 ~@2 x!2 ~@4", C: "~@13 x!3", D: "x!3 ~@2 x ~@10", E: "~@12 x!4",
  F: "x ~ x!2 ~@2 x ~@9",
})).gain(0.36)

// drums · open hat
const open_hat = s("oh").struct("<~@20 A@7 B C D@8 E ~@4 F D@6 G F D@6 H D I ~ D@12 ~>".pickRestart({
  A: "x!4", B: "x", C: "~ x!7", D: "x!8", E: "x!3 ~@5", F: "~@4 x!4", G: "x!4 ~@4", H: "x!7 ~", I: "x!5 ~@3",
})).gain(0.29)

// drums · high tom
const high_tom = s("ht").struct("<~@37 [~@9 x ~@6] ~@3 [~@3 x] ~@7 [~@8 x!5 ~@3] [~ x!2 ~@5] ~@23>").gain(0.43)

// drums · crash
const crash = s("cr").struct(`<
  ~@28 A ~@3 A ~@3 A B ~@4 C ~@3 C ~@3 C ~@3 C ~ C D C@2 ~ A ~@3 A@2 ~@3 A@2 ~ A
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x", D: "~@7 x",
})).gain(0.29)

// drums · ride
const ride = s("rd").struct(`<
  ~@28 A B@3 A B@3 A C ~@4 D B@3 E B@2 F D B@3 E B E G D H ~ A B@3 A@2 B@3 A@2 B ~
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!2 ~@6", D: "~@5 x!3", E: "x!4 ~ x!3", F: "x!5 ~@3", G: "x!6 ~@2", H: "x!4 ~@4",
})).gain(0.29)

stack(bass, overdriven_guitar, kick, kick_soft, snare, low_tom, mid_tom, open_hat, high_tom, crash, ride)

More by Queen