Strudelify
Another One Bites The Dust cover art

1980 · The Game

Another One Bites The Dust

Queen

KeyG majorTempo115 bpm
0:00/0:00
// Another One Bites The Dust — Queen
// 115 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 8 "Guitar Harmonics" named as a guitar, played on electric guitar clean (its synth drum patch is not one); ch 9 "Guitar Harmonics" named as a guitar, played on electric guitar clean (its synth drum patch is not one)
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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.

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note("<~@29 A B A C ~@28 A B A C ~@12 A B A C ~@5>".pickRestart({
  A: "[d4,e4,g4,b4]!2 [d4,e4]!2 [d4,e4,g4,b4]!2 [d4,e4] ~ [d4,e4,g4,b4]!2 [d4,e4] [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4]", // Em7 Dsus2 Em7 Dsus2 Em7 Dsus2 Em7 Dsus2
  B: "[d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [a#2,a3] [a#2,e3,a3,c4,e4] [e3,a3,c4,e4]!2 [d3,b3,d4] [e3,a3,c4,e4] ~ e4", // Em7 A#maj7 Am G Am
  C: "[d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [a#2,a3] [a#2,e3,a3,c4,e4] [e3,a3,c4,e4]!2 [d3,b3,d4] [e3,a3,c4,e4] ~@2", // Em7 A#maj7 Am G Am
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.8)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C B D E F G H B I B J K L M N B I B J B I O P Q R S T B I B J K L M N B I B J B I O P U ~@11 B I B J B I B J K L M
  N B I B J B I O P B I B J K L M V ~
>`.pickRestart({
  A: "~@14 a1 g1", B: "e1@2 ~@2 e1@2 ~@2 e1@2 ~@5 e1", C: "e1 ~ e1@2 g1@2 e1 a1 ~@6 a1 g1",
  D: "e1 ~ e1@2 g1@2 e1 a1 ~@8", E: "[e1,e2]@2 ~@2 [e1,e2]@2 ~@2 e2@2 ~@5 [e1,e2], ~@8 e1 ~@7",
  F: "[e1,e2] ~ [e1,e2]@2 [g1,g2]@2 [e1,e2] [a1,a2] ~@6 [a1,a2] [a0,g1,g2]", // E G E A A7
  G: "e2@2 ~@2 [e1,e2] ~@3 e2@2 ~@5 [e1,e2], e1 ~@7 e1 ~@7", H: "[e1,e2]!2 [e1,e2]@2 [g1,g2]@2 [e1,e2] [a1,a2] ~@8",
  I: "e1 ~ e1@2 g1@2 e1 a1 ~@6 [g1,a1] g1", J: "e1@4 g1@2 e1 a1 ~@8", K: "c2 ~ c2 ~@2 c2 ~ c#2 [d2,e2] g2@3 g1@2 ~@2",
  L: "c2 ~ c2 ~@2 c2 ~ c#2 d2@2 ~@2 g1@4", M: "c2 ~ c2 ~@2 c2 ~ c#2 d2 g2@3 g1@2 ~@2",
  N: "a1 ~ a1 ~ a1@2 a#1 [b1,c2] ~@4 g1@4", O: "f#1@2 ~@4 f#1 g1 a1 ~ a1 ~ a1@4", P: "f#1 ~@5 g1@2",
  Q: "e1@2 ~@2 e1@2 ~@2 e1 ~@6 e1", R: "e1 ~ e1@2 g1@2 e1 a1 ~@6 a1 [a0,g1]", S: "e1 ~@3 e1 ~@3 e1 ~@6 e1",
  T: "e1!2 e1@2 g1@2 e1 a1 ~@8", U: "e1@3 ~@13", V: "a1 ~ a1 ~ a1@2 a#1 [b1,c2] ~@8",
})).s("gm_electric_bass_finger").gain(0.68)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@16 A B ~@5 C D E ~@7 F G H I B ~@5 J D B ~@19 F G H I B ~@5 C D B ~@3 F G H K ~
>`.pickRestart({
  A: "~@3 g2", B: "e2 ~@7", C: "f#2 ~@5 f#2!2 a2@2 a2 ~ a2@4", D: "f#2 ~@5 g2@2", E: "e2 ~@15",
  F: "c3 ~ c3@2 ~ c3 ~ c#3 d3 g3@3 g2@2 ~@2", G: "c3 ~ c3 ~@2 c3 ~ c#3 d3 ~@3 g2@3 ~",
  H: "c3 ~ c3 ~@2 c3 ~ c#3 d3 g3@3 g2@4", I: "a2 ~ a2 ~ a2@2 ~ b2 ~@4 g2@4, ~@3 a#2 ~@4",
  J: "f#2 ~@5 f#2!2 a2 ~ a2 ~ a2@4", K: "a2 ~ a2 ~ a2@2 ~ b2 ~@8, ~@3 a#2 ~@4",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.3)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~@5 A@4 ~@16 A@4 ~@20 A@4 ~@4 A@4 ~@25>".pickRestart({
  A: "[a3,d4,g4]/4", // Dsus4
})).s("gm_string_ensemble_2").gain(0.06).pan(0.7)

// other · synth brass 1 · "Synth Brass"
const synth_brass_1 = note("<~@29 A B C D E F G H ~@15 I J K J L M N ~@2 A B C D E F G H ~@17>".pickRestart({
  A: "e5 ~ e5 ~ e5 ~ e5 ~ g5@2 g5 e5 ~@3 e5", B: "b5 ~ b5 ~ b5!2 ~ a5 ~@8", C: "e5 ~ e5 ~ e5 ~ e5!2 g5!2 ~ e5 ~@3 e5",
  D: "b5 ~ b5 ~ b5!2 ~ a5 ~@6 c6 b5", E: "c6!2 ~@4 c6!2 d6!2 ~ g5@3 ~ g5", F: "c6 ~ c6 ~ a#5 a5 ~ g5 ~@8",
  G: "c6 ~ c6 ~@2 c6 ~ c#6 d6!2 ~@2 g5 ~@3", H: "a5 ~ a5 ~ a5!2 a#5 ~ b5 ~@7", I: "~@14 a4 b4",
  J: "d5!3 ~ d5 ~ d5 e5 ~@7 b4", K: "d5!3 ~ d5 ~ d5 e5 ~ g5 ~ g5@4 b4", L: "d5!3 ~ d5@2 d5 e5 ~@2 g5@4 a5 g5",
  M: "b5@2 a5 g5 a5@2 g5 e5 g5@2 e5 d5 e5@2 d5 b4", N: "d5@2 b4 a#4@2 a4 g4 a4@2 g4 e4 d4 b3 a3 g3@2",
})).s("gm_synth_brass_1").gain(0.63)

// chords · electric guitar clean · "Guitar Harmonics"
const electric_guitar_clean_2 = note("<~@49 A@4 ~@33>".pickRestart({
  A: "[~@5 b3 ~@5 f#4@9 ~@4 g#4@8 ~ f4 ~@2 c#5@9 ~@4 d#5@15, ~ [a#3,c#4]@4 g3@3 f#4@8, ~@24 d#4@25 ~@15, ~@36 a#4 ~@8 a#4@18 ~]/4", // A#m
})).s("gm_electric_guitar_clean").gain(0.42).pan(0.1)

// chords · electric guitar clean · "Guitar Harmonics"
const electric_guitar_clean_3 = note("<~@49 A@5 ~@32>".pickRestart({
  A: "[~@9 b2 ~@5 f#3@9 ~@4 g#3@8 ~ f3 ~@2 c#4@9 ~@4 d#4@15 ~@12, ~@2 [a#2,c#3]@4 g2@3 f#3@8 ~@3, ~@28 d#3@25 ~@27, ~@40 a#3 ~@8 a#3@18 ~@13]/5", // A#m
})).s("gm_electric_guitar_clean").gain(0.46).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~ A@15 B A@19 B A@15 C ~@4 A@11 B A@15 B D>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@4 x ~@2", C: "x!3 ~", D: "x",
})).gain(0.75)

// drums · clap
const clap = s("cp").struct("<~@8 A ~@9 B ~ B ~@7 A ~@9 B ~ B ~@4 C D C D C D C D@5 ~@3 A ~@9 B ~@15>".pickRestart({
  A: "~@5 x!2 ~", B: "~@3 x", C: "~ x ~ x", D: "~@2 x ~@2 x!2 ~",
})).gain(0.75)

// drums · snare
const snare = s("sd").struct("<A B@15 C B@19 C B@15 D ~@4 B@11 C B@15 C ~>".pickRestart({
  A: "~@14 x!2", B: "~ x ~ x", C: "~@4 x ~@4 x!4 ~@3", D: "~@4 x ~@4 x!5 ~@2",
})).gain(0.75)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@19 A ~@19 A ~@3 A ~@33>".pickRestart({
  A: "~@3 x",
})).gain(0.08)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C D E D E F A B C D A B C D A B C D A B C D E D E F A B C D A B C D A B C D A B C D E D E F E D E G ~@4 A B C D
  A B C D A B C D A B C D A B C D A B C D A B C H ~
>`.pickRestart({
  A: "~ x!2 ~ x!3 ~", B: "x!3 ~ x!3 ~", C: "x!3 ~ x!4", D: "x ~ x ~ x!3 ~", E: "x!8",
  F: "x ~ x ~ x ~ x ~ x!2 ~@2 x ~ x ~", G: "x ~ x ~ x ~ x ~ x!2 ~@2 x ~@3", H: "x ~ x ~ x!4",
})).gain(0.68)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B@2 C ~ C ~@2 A B@2 C A B@2 C A B@2 C A B@2 C ~ C ~@2 A B@2 C A B@2 C A B@2 C A B@2 C ~ C ~@3 C ~@6 A B@2 C A B@2
  C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C ~
>`.pickRestart({
  A: "~@3 x ~@3 x", B: "~@3 x ~@4", C: "~ x ~ x ~@4",
})).gain(0.38)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~@5 A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@2",
})).gain(0.68)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@7 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@15 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.68)

stack(
  electric_guitar_clean, bass, overdriven_guitar, string_ensemble_2, synth_brass_1, electric_guitar_clean_2,
  electric_guitar_clean_3, kick, clap, snare, low_tom, hihat, hihat_soft, open_hat, crash
)

More by Queen