Strudelify
You Don't Fool Me cover art

1995 · Made In Heaven

You Don't Fool Me

Queen

KeyE minorTempo123 bpm
0:00/0:00
// You Don't Fool Me — Queen
// 123 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 15 "SLOWSTRING" named as a string part, played on string ensemble 1 (its distortion guitar patch is not one)
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): +CHORUS GT.
setcpm(123/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, A@4 for four bars: edit a riff to change every repeat.

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@7 A B@2 C@5 A B@2 C@5 D E@2 F@5 D E@2 F@5 D E@2 F@5 D E@2 F@5 ~@20 D E@2 G@5 H E@2 G@5 H E@2 G@5 H E@2 G@5 D E@2 F@5
  D E@2 F@5 ~
>`.pickRestart({
  A: "[b3,g4,b4]", B: "[~@2 [d4,b4,d5]@3 ~ [c4,a4,c5]@3 ~ [b3,g4,b4]@3 ~ [a3,f#4,a4]@18]/2",
  C: "[~@2 [d4,b4,d5]@3 ~ [c4,a4,c5]@3 ~ [b3,g4,b4]@3 ~ [a3,e4,a4]@24 ~@2 [a3,e4,a4]@2 [a3,e4,a4]@3 ~ [b3,g4,b4]@32 ~@2]/5", // G F Em A5 Em
  D: "[b3,d4,e4,g4,b4]", // Em7
  E: "[~@2 [d4,e4,g4,b4,d5]@3 ~ [c4,e4,g4,a4,c5]@3 ~ [b3,d4,e4,g4,b4]@3 ~ [a3,d4,e4,f#4,a4]@18]/2", // Em7 Am7 Em7 D
  F: "[~@2 [d4,f#4,a4,b4,d5]@3 ~ [c4,d4,e4,a4,c5]@3 ~ [b3,d4,g4,a4,b4]@3 ~ [a3,c4,d4,e4,a4]@24 ~@2 [a3,c4,d4,e4,a4]@2 [a3,c4,d4,e4,a4]@3 ~ [b3,e4,g4,b4]@32 ~@2]/5", // Bm7 Am G Am Em
  G: "[~@2 [d4,e4,a4,b4,d5]@3 ~ [c4,d4,e4,a4,c5]@3 ~ [b3,d4,f#4,a4,b4]@3 ~ [a3,b3,e4,g4,a4]@24 ~@2 [a3,c4,d4,e4,a4]@2 [a3,c4,d4,e4,a4]@3 ~ [b3,e4,g4,b4]@32 ~@2]/5", // Dsus2 Am Bm7 Em Am Em
  H: "[b3,c4,e4,g4,b4]", // Cmaj7
})).s("gm_epiano2").gain(0.22)

// bass · electric bass finger · "FINGERDBAS"
const bass = note("<~@15 A@41 B C@2 A B C@2 D@2 E F G H I@2 J K L@2 ~@16 A@30 M ~@2>".pickRestart({
  A: "e1 ~@3 e1@2 ~ a1 b1 ~ d2@2 b1 ~ g1@2", B: "e1 ~@3 e1@2 ~ e1 g1 ~ g1@3 ~ g1@2",
  C: "[c2 ~@3 c2@2 ~ g1 c2 ~ c2@2 c2 ~ d#2@10 ~@4 d#2 [c2,d2] b1 a1]/2", D: "g1 ~@3 g1@2 ~ g1!2 ~ g1 ~ g1 ~ g1 ~",
  E: "a1 ~@3 a1@2 ~ a1!2 ~ a1 ~ a1 ~ a1 ~", F: "d2@5 ~ d2 ~ d2@3 ~ d2 ~ d2 ~", G: "e1@12 ~@2 e1 ~", H: "e1@12 ~@2 e2 ~",
  I: "d2@12 ~@2 d2 ~", J: "c2@12 ~@2 c2 ~", K: "c2@7 ~ c2@2 d2 ~ d2 ~ d2@2", L: "[e1@31 ~]/2",
  M: "e1 ~@3 e1@2 ~ a1 b1 ~ d2@2 b1 ~@3",
})).s("gm_electric_bass_finger").gain(0.22)

// bass · electric bass finger · "FINGERDBAS" · soft notes
const bass_soft = note("<~@15 A@41 B C D A B C D C@2 A ~@25 A@31 ~@2>".pickRestart({
  A: "~@6 a1 ~@9", B: "~@6 e1 ~@9", C: "~@6 g1 ~@9", D: "~@15 g1",
})).s("gm_electric_bass_finger").gain(0.16)

// chords · acoustic guitar steel · "+12SNR GTR"
const acoustic_guitar_steel = note(`<
  ~@7 A B@2 C@2 D@3 A B@2 C@2 D@3 A B@2 C@2 D@3 A B@2 C@2 D@3 A B@2 C@2 D@3 A B@2 C@2 D@3 ~@20 A B@2 E@2 D@3 A B@2 E@2
  D@3 A B@2 E@2 D@3 A B@2 E@2 D@3 A B@2 C@2 D@3 A B@2 C@2 D@3 ~
>`.pickRestart({
  A: "[b3,g4,b4]", B: "[~@2 [d4,b4,d5]@3 ~ [c4,a4,c5]@3 ~ [b3,g4,b4]@3 ~ [a3,f#4,a4]@18]/2",
  C: "[~@2 [d4,b4,d5]@3 ~ [c4,a4,c5]@3 ~ [b3,g4,b4]@3 ~ [a3,e4,a4]@18]/2", // G F Em A5
  D: "[~@8 [a3,e4,a4]@2 [a3,e4,a4]@3 ~ [b3,g4,b4]@32 ~@2]/3", // A5 Em
  E: "[~@2 [d4,b4,d5]@3 ~ [c4,a4,c5]@3 ~ [b3,a4,b4]@3 ~ [a3,e4,a4]@18]/2", // G F B7 A5
})).s("gm_acoustic_guitar_steel").gain(0.22)

// other · electric guitar muted · "MUTED GTR" · E A5 E7 E5 G E A5 E7 …
const electric_guitar_muted = note(`<
  ~@3
  [[e2,e3]@2 ~@2 [e2,e3]@2 ~ [e2,a2] b2 ~ [e2,d3]@2 [b2,e3] ~ [g2,g3]@2]!52
  ~@12
  [e2@2 ~@2 e2@2 e2!2 g2 ~ g2 ~ e2 ~ e2!2]!24
  [[e2,e3]@2 ~@2 [e2,e3]@2 ~ [e2,a2] b2 ~ [e2,d3]@2 [b2,e3] ~ [g2,g3]@2]!30
  [[e2,e3]@2 ~@2 [e2,e3]@2 ~ [e2,a2] b2 ~ [e2,d3]@2 [b2,e3] ~@3]
  ~@2
>`).s("gm_electric_guitar_muted").gain(0.24)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@6 A@4 B@40 C@6 D@4 E@6 F@6 G@6 H@16 I@8 J@4 A@4 B@8 K@5 ~>".pickRestart({
  A: "[~@15 [e2,b3,e4,g4,b4]@32 [e2,a3,d4,f#4,a4]@17]/4", // Em D
  B: "[~@15 [a2,a3,c4,e4,a4]@32 [e2,e4,g4,b4]@32 [e2,e4,g4,b4]@32 [e2,a3,d4,f#4,a4]@17, ~@47 b3@64 ~@17]/8", // Am Em D
  C: "[~@15 [a2,a3,c4,e4,a4]@32 [e2,e4,g4,b4]@32 [e2,e4,g4,b4]@17, ~@47 b3@49]/6", // Am Em
  D: "[~@9 [d2,d4,f4]@6 [c2,g3,e4]@12 [d#2,d#4,a4]@20 [e2,b3,e4,g4,b4]@17, ~@15 [c4,g4]@33 ~@16]/4", // Dm C D#dim Em C5
  E: "[~@9 [d2,d4,f4]@6 [c2,g3,e4]@12 [d#2,d#4,a4]@20 [g2,b3,d4,g4,b4]@32 [a2,e4,g4,a4,c5]@16 d2, ~@5 [c4,g4]@11 ~@16]/6", // Dm C D#dim G Am7 C5
  F: "[e5@15 [e2,b3,e4,g4,b4]@32 [d2,a3,d4,f#4,a4]@32 [c2,g3,c4,e4,g4]@17]/6", // Em D C
  G: "[~@8 [a3,f#4]@7 [e2,b3,e4,b4]@32 [e2,b3,e4,b4]@32 [e2,a3,d4,f#4,a4]@17, ~@7 [d2,d4]@8 g4@64 ~@17]/6", // D E5 D
  H: "[~@15 [e2,b3,c4,e4,a4]@32 [b3,e4,g4]@16 [a3,d4,f#4]@16 [a2,c4,e4,g4,b4]@32 [e2,a3,d4,f#4,a4]@17, ~@15 g4@31 ~ [e2,b4]@32 ~@49]/8", // Am Em D Am7 D E5
  I: "[~@15 [e2,b3,c4,e4,a4]@32 [e2,a3,d4,f#4,b4]@32 [a2,c4,e4,g4,b4]@32 [e2,a3,d4,f#4,a4]@17, ~@15 g4@31 ~@82]/8", // Am Bm7 Am7 D
  J: "[~@15 [e2,b3,c4,e4,a4]@32 [e2,a3,d4,f#4,b4]@17, ~@15 g4@31 ~@18]/4", // Am Bm7
  K: "[~@15 [a2,a3,c4,e4,a4]@32 [e2,b3,e4,g4,b4]@32 ~]/5", // Am Em
})).s("gm_synth_strings_1").gain(0.16)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@9 [~@6 a4@2 g4 ~ a4@2 g4 ~ a4@2] [g4 ~@15] ~@113>")
  .s("gm_electric_guitar_jazz").gain(0.2)

// other · distortion guitar · "JAZZ GTR"
const distortion_guitar = note(`<
  ~@12 A@2 B ~@2 C@5 D ~@4 E F G@2 ~@2 H ~ I@2 J K L M N ~ O P Q R ~@7 S T@4 U@4 V W X Y@6 Z AA@2 ~@4 AB@4 ~@5 AC@3 ~@9
  AD AE@4 ~ AF AG@2 AH@3 AI AJ AK AL@2 AG@2 ~@5
>`.pickRestart({
  A: "[~@2 e4@5 b3 a3 ~ a3 ~ a3 g3 e3@5 d3 [a2,b2,c3] [f2,g2] e2 ~@9]/2", B: "a4@8 a4@2 d5 ~@5",
  C: "[~@12 [c4,d4]@2 e4@10 ~@4 [c4,d4]@2 e4@10 ~@4 [f#4,g4]@2 e4@10 ~@4 [f#4,g4]@2 e4@8 a4 g4 ~@6 a3 b3]/5", // Csus2 Gmaj7
  D: "~@2 e4 ~ e4@3 d4 e4 d4 b3 ~@5", E: "~@6 a4 g4 a4@4 ~@2 e4 d4", F: "e4@5 ~@11",
  G: "[~@7 [e3,a3] b3 ~ d4@2 e4 ~ [b4,d5]@17 ~]/2", H: "~@2 a4@2 g4 ~ b4 ~ d5@7 ~",
  I: "[~@2 a5@2 g5 ~@3 a5@2 g5 ~@3 e5@9 d5 [a4,b4,c5] [f4,g4] ~@6]/2", J: "~@10 [d4,e4] ~@5",
  K: "~@2 [d4,g4] ~ d4 [d4,g4] ~ d4 [d4,g4] ~ d4 [d4,g4]@2 d4 [d4,g4]@2", L: "d4 e4@6 ~@9", M: "~@6 e4@2 e4!8", N: "e4",
  O: "~@5 a5@3", P: "g5 ~@9 a5@6", Q: "g5 ~@15", R: "b4@3 ~ a4@3 ~ g4@3 ~ f#4@4",
  S: "~@12 [e4,f4,g4,a4,b4,c5] [a3,b3,c4,d4] [d3,e3,f3,g3] c3", // Cmaj7 D7 Em7
  T: "[b4@10 a4 b4 ~@2 g4@10 ~@2 a4@3 ~ g4 a4@9 ~@2 f#4@2 ~@2 d#4@12 a4@2 ~@3 [c#4,g#4]]/4", // C#5
  U: "[f#5@12 e5@2 b4@10 [e4,f4,g4,a4] [b3,c4,d4] [a3,g4]@2 ~@2 c5@14 c5@2 d5@16 ~@2, c#5 ~@63]/4", // Fmaj7 Bm A7
  V: "b3 d4 ~ d4 b3 g4 ~ d4 g4!2 ~ b4 g4!2 ~ g4", W: "b4 g4 d5@2 b4 g5 d5 ~ d5 g5 ~ a5@4 g5",
  X: "a5@8 [g#4,a4,a#4] [d4,e4,f4,g4] [f3,g3,a3,b3,c4] ~@5, ~@5 a5@3", // Em7 F
  Y: "[d5@6 c#5 [f4,g4,a4,b4,c5] [a3,b3,c4,d4,e4] [e3,f3,g3,g4,g#4,a4] [d4,e4,f4] [g3,a3,b3,c4] [c3,d3,e3,f3] [a2,b2] e5@6 e5@3 d5 e5 g5 e5 d5 e5 g5 e5@6 e5@3 d5 e5 g5 e5 d5 e5 g5 e5@6 e5@3 d5 e5 g5 e5 d5 e5 g5 e5@4 e5@2 e5@3 d5 e5 g5 e5 d5 e5 g5 e5@6 e5 d5 c5 b4 c5 b4 c5 b4 a4 g4 a4 g4, ~@14 g2 ~@81]/6", // F Am Dm Cmaj7 Dm7 Asus2
  Z: "f#4 g4 f#4 e4 f#4 e4 d4 b3 f#4 g4 f#4 g4 f#4 e4 f#4 e4", AA: "[b3 d4 e4@30]/2", AB: "[[e3,b3]@31 d4@29 ~@4]/4",
  AC: "[~@15 d4@24 ~ [c4,d4,e4] [g3,a3,b3] [e3,f3] [c3,d3] [g2,a2,b2] f2 [d2,e2] c2]/3", AD: "~@8 b4@3 e5@3 b4@2",
  AE: "[a4@23 [e4,a4,e5] ~@2 e5@4 g5@24 ~@10, ~@23 g5@3 ~@38]/4", // A5
  AF: "~@12 [f4,g4,a4,b4,c5,d5] [b3,c4,d4,e4] [g3,a3] f3", AG: "e4/2", AH: "[a4@5 a4@3]/3", AI: "~@2 b3 d4 e4 d4 ~@2",
  AJ: "~@4 b3@2 d4@2 e4@2 ~ g4 ~@2 a4 ~", AK: "a4@2 ~ a4@2 ~ a4@2 g4@3 ~@5", AL: "[e4@29 ~@3]/2",
})).s("gm_distortion_guitar").gain(0.3)

// chords · guitar harmonics · "GTHARMONIC"
const guitar_harmonics = note("<~@42 A@2 ~@36 B@3 ~@5 B@3 ~@33>".pickRestart({
  A: "[~@6 [c3,g3]@17 ~@9]/2", B: "[~@15 d4@29 ~@4]/3",
})).s("gm_guitar_harmonics").gain(0.3)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@78 A@8 B@8 C@8 D@4 E@4 F@8 G@5 ~>".pickRestart({
  A: "[~@15 [e2,b3,e4,g4]@32 [b3,e4,g4]@16 [a3,d4,f#4]@16 [a2,c4,e4,g4]@32 [e2,b3,e4,g4]@17, ~@47 e2@32 ~@49]/8", // Em D Am7 Em
  B: "[~@15 [e2,b3,e4,a4]@32 [b3,e4,g4]@16 [a3,d4,f#4]@16 [a2,c4,e4,g4]@32 [e2,b3,e4,g4]@17, ~@15 g4@31 ~ [e2,b4]@32 ~@49]/8", // Esus4 Em D Am7 Em E5
  C: "[~@15 [e2,b3,e4,a4]@32 [e2,a3,d4,f#4,b4]@32 [a2,c4,e4,g4]@32 [e2,b3,e4,g4]@17, ~@15 g4@31 ~@82]/8", // Esus4 Bm7 Am7 Em
  D: "[~@15 [e2,b3,e4,a4]@32 [e2,a3,d4,f#4,b4]@17, ~@15 g4@31 ~@18]/4", // Esus4 Bm7
  E: "[~@15 [e2,b3,e4,g4,b4]@32 [e2,a3,d4,f#4,a4]@17]/4", // Em D
  F: "[~@15 [a2,a3,c4,e4,a4]@32 [e2,e4,g4,b4]@32 [e2,e4,g4,b4]@32 [e2,a3,d4,f#4,a4]@17, ~@47 b3@64 ~@17]/8", // Am Em D
  G: "[~@15 [a2,a3,c4,e4,a4]@32 [e2,b3,e4,g4,b4]@32 ~]/5", // Am Em
})).s("gm_string_ensemble_2").gain(0.26)

// other · string ensemble 1 · "SLOWSTRING"
const string_ensemble_1 = note("<~@55 A@2 B C A@2 B C ~@3 D@6 E@3 ~@49>".pickRestart({
  A: "~@2 d4 ~ d4@3 b3 d4 e4 d4 ~@5", B: "~@2 e4 ~ e4@3 c4 e4 f4 e4 ~@5", C: "~@2 d#4 ~ d#4@3 c4 d#4 f4 d#4 ~@5",
  D: "[~@16 [b3,e4]@31 ~ [a3,d4]@31 ~ [g3,b3]@16, ~@15 [b2,e3]@32 [a2,d3]@32 [c3,e3]@17]/6", // E5 D5 G E5 D5 C
  E: "[~@8 [a3,d4]@2 [d3,f#3,a3,d4]@3 ~ [b3,e4]@32 ~@2, ~@7 [d3,f#3]@2 ~@4 [e3,g3]@32 ~@3]/3", // D5 D E5 D Em
})).s("gm_string_ensemble_1").gain(0.33).pan(0.8)

// chords · overdriven guitar · "OVERDRIVE" · Em C Em D5 Em C5 E5 C5 …
const overdriven_guitar = note(`<
  ~@55
  [~@2 [b3,g4] ~ [b3,g4]@3 [g3,e4] [b3,g4] [d4,a4] [b3,g4] ~@5]!2
  [~@2 [c4,g4] ~ [c4,g4]@3 [b3,e4] [c4,g4] [d4,a4] [c4,g4] ~@5]
  [~@2 [c4,g4] ~ [c4,g4]@3 [g3,e4] [c4,g4] [d4,a4] [c4,g4] ~@5]
  [~@2 [b3,g4] ~ [b3,g4]@3 [g3,e4] [b3,g4] [d4,a4] [b3,g4] ~@5]!2
  [~@2 [c4,g4] ~ [c4,g4]@3 [g3,e4] [c4,g4] [d4,a4] [c4,g4] ~@5]!2
  ~@61
>`).s("gm_overdriven_guitar").gain(0.33).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@15 [x!2]!58 x ~@17 [x!2]!31 ~@2>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@15 A@15 B A@7 C A@19 D A@9 D A@4 ~@17 E A@15 F A@15 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x ~ x ~@2 x", C: "~@2 x ~ x!2 ~ x", D: "~@4 x ~@7 x ~@2 x", E: "~@12 x ~@2 x",
  F: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@30 A ~@7 B ~@15 C ~@3 A ~@9 A ~@21 A ~@7 D ~@7 E ~@17>".pickRestart({
  A: "~@7 x", B: "~@7 x ~@5 x ~@2", C: "~@11 x ~@4", D: "~@7 x ~ x ~ x ~@2 x!2", E: "~@6 x!2 ~@8",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@46 A ~@7 B ~@7 C D E ~ B ~@3 B ~@2 D ~@24 F ~@7 F ~@17>".pickRestart({
  A: "~@3 x ~@4", B: "~@7 x", C: "~@8 x ~@2 x ~ x ~@2", D: "x", E: "~@13 x ~@2", F: "~@4 x!2 ~@2",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@15 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B ~@18 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B@2 ~@2
>`.pickRestart({
  A: "x!8", B: "x!7 ~",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "x",
})).gain(0.08)

// drums · mid tom
const mid_tom = s("mt").struct("<~@46 A ~@15 B ~@3 C ~@3 C ~@35 D ~@17>".pickRestart({
  A: "~@7 x", B: "~ x", C: "~@3 x", D: "~@11 x ~ x!2 ~",
})).gain(0.48)

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

// drums · high tom
const high_tom = s("ht").struct("<~@46 A ~@17 B ~ C ~@3 C ~@53>".pickRestart({
  A: "~@5 x ~@2", B: "~@11 x!2 ~@3", C: "~@10 x!3 ~@3",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@15 A ~@23 A ~@7 A ~@7 A ~@2 B A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@7 A ~@9 A ~@7 A ~@7 A ~@7 A ~@8
>`.pickRestart({
  A: "x", B: "~@3 x",
})).gain(0.4)

// … 28 more lines

More by Queen