Strudelify
Don't Try So Hard cover art

Innuendo

Don't Try So Hard

Queen

KeyE minorTempo78 bpm
0:00/0:00
// Don't Try So Hard — Queen
// 78 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 49, 4/4 at bar 49) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 69 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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 · overdriven guitar · "Solo - Electric Guitar"
const overdriven_guitar = note("<~@48 A@4 B@2 C D@4 ~@10>".pickRestart({
  A: "[~@39 c5@6 b4@6 c5@6 b4@6 c5@6 b4@6 c5@6 b4@6 f#3@5 ~ g3@17 ~ f#3 ~ g3@4 f#3@17 ~ e3 f#3@5 e3@5 ~ e3@18 b2@5 ~ e3@5 ~ f#3@5 ~ g3@5 ~ f#3@3]/4",
  B: "[~@2 f#3 g3@5 ~ f#3@5 ~ e3@14 ~ b2@9 b2@5 ~ a2@5 ~ a2@17 f#4@12 ~@3 e4@3 f#4@10]/2",
  C: "~@2 e4 f#4@5 e4@3 d4@3 a3 b3@16 ~ a3@3 g3@3 f#4@6 g4@3 ~",
  D: "[~ f#4@5 ~ e4@3 d4@3 e4@18 ~@3 c3 d3 ~ e3@2 f#3@2 g3@2 a3@2 b3@2 c4@2 d4@2 e4@2 f#4@2 ~ g4@2 a4@2 ~@4 b4@5 ~ c5@12 b4 a4@2 b4@24 d5 e5@10 d5 e5@9 ~@2 d5@24 ~@36]/4",
})).s("gm_overdriven_guitar").gain(0.48).pan(0.1)

// other · overdriven guitar · "Solo - Electric Guitar" · soft notes · E D A5
const overdriven_guitar_soft = note(`<
  ~@40
  [~@2 [e4,b4,e5,g#5]@12 [e4,b4,e5,g#5]@12 ~ [e4,b4,e5,g#5]@12 [e4,b4,e5,g#5]@5 ~ [e4,b4,e5,g#5]@2 ~]
  [[e4,b4,e5,g#5]@2 ~ [e4,a4,d5,f#5]@5 ~ [e4,a4,d5,f#5]@5 ~ [e4,a4,d5,f#5]@11 ~ [e4,a4,d5,f#5]@5 ~ [e4,a4,d5,f#5]@5 ~ [e4,a4,d5,f#5]@9]
  [~@3 [a3,e4,a4]@35 ~@10]
  ~@26
>`).s("gm_overdriven_guitar").gain(0.3).pan(0.1)

// chords · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note(`<
  A@2 B ~@8 C D E F G H I J K@3 L M N@4 ~ O@2 P Q R S T U V@2 ~@3 W X Y Z@2 ~@2 AA@5 AB AC@8 AD@2 ~ AE@2 ~
>`.pickRestart({
  A: "[~@35 a3@13, ~@43 e2@27 ~@26, ~@25 a2@14 ~@9, ~@56 b3@27 ~@13, ~@63 e4@26 ~@7]/2",
  B: "~ e4@6 ~@5, ~ e3@23 ~@24, ~ b3@12 ~@11", C: "~@8 e3@5 ~ g3@5 ~ b3@5 ~ e4@5 ~ b3@5 ~ g3@5 ~ e3@4, ~ e2@23",
  D: "~@2 c4@5 ~ b3@5 ~ b3@12 ~@12 e4@10, ~@13 g3@11, ~@2 e3", E: "~@8 e3@5 ~ a3@5 ~ c4@5 ~ e4@22, ~ a2@23",
  F: "~@2 c4@5 ~ b3@5 ~ b3@12 ~@12 e4@10, ~@13 a3@11, ~@2 e3",
  G: "~@8 a3@5 ~ d4@5 ~ f#4@5 ~ e4@5 ~ c4@5 ~ g3@10, ~ d3@23",
  H: "~@8 a3@5 ~ d4@5 ~ f#4@5 ~ g4@5 ~ c4@5 ~@7 e3@4, ~@2 d3@41 ~@5, ~@19 g3@5",
  I: "~@8 e3@5 ~ a3@11 ~ a3@5 ~ c4@5 ~ e4@10, ~ a2@23", J: "~ [e2,b2,e3,g3,b3,e4]@23",
  K: "[~@6 a3@5 ~ d4@5 ~ a3@5 ~ f#4@5 ~ d4@5 ~ a3@5 ~ d4@5 ~@7 g3@5 ~ c4@5 ~ g3@5 ~ e4@5 ~ c4@5 ~ g3@5 ~ c4@5 ~@8 f#3@5 ~ b3@5 ~ d4@5 ~ f#4@5 ~ d4@5 ~ d4@11, d3@2 b2]/3",
  L: "~@7 e3@5 ~ a3@5 ~ c4@5 ~ e4@5 ~ c4@5 ~@2 a3@10, ~ a2@47", M: "~@8 g3@11 ~ g3@6 ~@6 g3@11 ~ g3@4, ~ e3@12 d#3@11",
  N: "[~@8 g3@11 ~@2 g3@6 ~@6 g3@11 ~ g3@6 ~@49 a#2@24 a2@24 ~@44, ~@2 d3@24 ~ c#3@24 c3@24 b2@24 ~@93, ~@57 e3@23 ~ e3@24 ~@87, ~@63 g3@23 ~ g3@24 ~@81]/4",
  O: "[~@13 d4@6 ~@13, ~@11 g2@8 ~@13, ~@35 b2@23 ~@38, ~@36 d3@25 ~@35, ~@38 g3@27 ~@31]/2",
  P: "~@6 e3@5 ~ g3@5 ~ b3@5 ~ e4@5 ~ b3@5 ~ g3@5 ~ e3@5 ~, e2", Q: "c4@5 ~ b3@5 ~ b3@36",
  R: "~@12 a3@12 e4@5 ~ b3@5 ~ a3@5 ~ e3@5 ~, a2, ~ e3@3 ~@4", S: "c4@5 ~ b3@5 ~ b3@12 a3@5 ~@7 g3@12, ~@5 e3@3",
  T: "~@3 c4, f#3 f3, ~@6 a3@23 ~ g3@18, ~@12 c4@23 ~@13",
  U: "~@6 a3@5 ~ f#4@5 ~ d4@5 ~ e4@5 ~ c4@5 ~ g3@5 ~ c4@5 ~, d3",
  V: "[~@6 e3@5 ~ a3@5 ~ b3@5 ~ e4@12 b3@5 ~@7 e2@48, a2@15 g3@17, ~@42 a3@5 ~@49]/2", W: "~@13 e2@3",
  X: "~ b2@2 ~@2 c#3@2 ~@2 d#3@4 e3@3",
  Y: "~@3 [d2,a2,d3,f#3]@17 ~ [d2,a2,d3,f#3]@5 ~ [d2,a2,d3,f#3]@11 ~ [d2,a2,d3,f#3]@9", // D
  Z: "[~@9 e2@5 ~ a2@5 ~ c#3@5 ~ e3@5 ~ c#3@5 ~ a2@5 ~ e2@5 ~@46]/2",
  AA: "[~@45 e3@5 ~ g3@5 ~ b3@5 ~ e4@5 ~ b3@5 ~ g3@5 ~ e3@5 ~@7 e3@5 ~ g3@5 ~ b3@5 ~ e4@5 ~ b3@5 ~ g3@5 ~ e3@5 ~@25 e4@24 ~@23 e4@24 f#4@5 ~ d4@4, ~@39 e2@48 e2@48 a2@47 ~ a2@47 ~@10, ~@47 e3@4 c4@4 ~@10 a3@4 ~@11, ~@49 a3@4 ~@10 e3@4 c4@4 ~@9]/5",
  AB: "~@2 a3@5 ~ f#4@5 ~ e4@5 ~ c4@5 ~ a3@5 ~ e4@5 ~ f#4@5 g4@5",
  AC: "[~ a4@5 ~ f#4@5 ~ e4@5 ~ c4@5 ~ a3@12 ~@6 e3@6 a3@11 ~ a3@5 ~ c4@5 ~ e4@11 ~ [e2,b2,e3,g3,b3,e4]@48 [d2,a2,d3,f#3]@17 ~ [d2,a2,d3,f#3]@5 ~ [d2,a2,d3,f#3]@17 ~ [d2,a2,d3,f#3]@5 ~ [d2,g2,c3,e3]@17 ~ [d2,g2,c3,e3]@5 ~ [d2,g2,c3,e3]@17 ~ [d2,g2,c3,e3]@5 ~ [b1,f#2,b2,d3]@17 ~ [b1,f#2,b2,d3]@5 ~ [b1,f#2,b2,d3]@24 ~@18 c4@5 ~ e4@5 ~ c4@5 ~ a3@5 ~ e3@5 ~@7 g3@5 ~ b3@5 ~ e4@5 ~@7 g3@5 ~ b3@5 ~ e4@5 ~ g3@5 ~ g3@5, ~@37 a2@48 ~@192 a2@48 ~@59, ~@277 e3@40 ~@8 e3@24 f#3@24 ~@11, ~@277 a3@33 ~@74]/8", // Em D C Bm
  AD: "[~ b3@5 ~ e4@5 ~@7 g3@5 ~ b3@5 ~ e4@5 ~@3 e4@48 ~@9, ~@13 b3@11 ~@13 g3@51 ~@8, ~@38 [b3,c4]@49 ~@9]/2", // Cmaj7
  AE: "[~@17 a3@15, ~@23 e2@28 ~@45, ~@29 a2@30 ~@37, ~@35 b3@31 ~@30, ~@43 e4@31 ~@22]/2",
})).s("gm_electric_guitar_clean").gain(0.46).pan(0.2)

// chords · overdriven guitar · "Electric Guitar"
const overdriven_guitar_2 = note("<~@43 A B C D@3 ~@20>".pickRestart({
  A: "~ [e3,g#3]@3 ~ [f#3,a3]@3 ~ [g3,a#3]@4 [g#3,b3]@3", B: "~ d2@15", C: "~ c#2@15", D: "[~ c2@32 ~@15]/3",
})).s("gm_overdriven_guitar").gain(0.44).pan(0.9)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@10 A B C@2 D@4 E F G H I J K@2 L@5 M N O P Q R S T@3 U V@2 W X@2 Y Z@6 AA@6 AB@5 ~@4
>`.pickRestart({
  A: "~@43 b1 ~ a#1 a1 [g1,g#1]", B: "f#1 f1 e1@23 ~ e1@22",
  C: "[~@2 e2@18 b2@5 ~ e2@14 ~ e2@3 b1@2 ~ e1@3 a1@36 ~@6 e2@4]/2",
  D: "[~@2 a1@36 ~@9 a1@3 d2@45 a1@3 d2@36 ~@6 d2@2 d#2 e2@3 a2@41 ~ a2@2 e2@2]/4", E: "a1 e2@23",
  F: "d2@17 ~ d2@5 ~ d2@18 a1@6", G: "d2@17 ~ d2@5 ~ d2@17 ~ d2@2 ~ c2@2 ~",
  H: "b1@18 ~ f#1@6 b1@12 ~@3 f#1@2 ~@4 b1@2", I: "~ a1@23 ~ a1@17 ~@2 c2@3 c#2", J: "d2 d#2 e2@11 ~ e3@12 d#3@22",
  K: "[~@2 d3@24 ~ c#3@18 c#2@6 c4@24 b3@21]/2", L: "[~@4 a#3@24 a3@24 g#3@18 a#3@18 d#2@32 ~@4 d2@53 g1@53 ~@10]/5",
  M: "e1@17 ~ b1@5 ~ e2@18 b2@6", N: "e3@18 b2@3 e2@3 e1@20 ~ f1 f#1 [g1,g#1]", O: "a1@6 e2@2 a2@6 d3 e3",
  P: "a2@30 b2@6 c3@6 e3@4 ~ a2", Q: "d3@17 ~ d3@3 a3@3 d3@12 g3@6 e3@3 a3@3",
  R: "d3@14 ~ c#3 c3 [a#2,b2] a2@6 d2@18 e3@3 g3@3", S: "a3@6 e3@2 a2@3 e3 a3 b3 a3@2",
  T: "[e1@98 e2@18 ~ e2@5 ~ e2@18 e2@2 ~]/3", U: "e2@2 ~ e2@17 ~ e2@5 ~ e2@21",
  V: "[~@3 a2@23 ~ a2@5 ~ a2@2 ~ a2@2 ~ a2@5 ~ a2@5 ~ e2@45]/2", W: "~@3 d2@17 ~ d2@5 ~ d2@18 a2@2 ~",
  X: "[d2@2 ~ c#2@17 ~ c#2@5 ~ c#2@17 ~ c#2@6 c3@12 c2@12 c3@12 c2@9]/2", Y: "~ c3@15",
  Z: "[~@3 b2@12 f#2@12 g2@12 d#2@48 e2@96 a1@30 e2@3 g3@3 a3@4 ~@2 a3@4 ~@2 a3@18 e2@5 a2@18 f#3@5 ~ d3@10]/6",
  AA: "[~@8 a2@5 ~ d2@20 ~ a2@3 d3@5 d2@14 ~ a2@3 d3@24 a2@48 e2@48 d2@17 ~ d2@5 ~ d2@17 ~ d2@5 ~ d2@23 ~ d2@23 ~ b1@11]/6",
  AB: "[~@7 b1@5 ~ b1@23 ~ a1@18 e2@6 a2@18 a1 a#1 b1 c2 [c#2,d2] d#2 e2@24 d#2@24 d2@24 c#2@24 c3@27 b2@24 ~@8]/5", // Dmaj7
})).s("gm_electric_bass_finger").gain(0.6)

// other · string ensemble 1 · "Bowed Strings Sound" · B F# G
const string_ensemble_1 = note("<~@48 [~ [b2,b3]@4 [f#2,f#3]@4 [g2,g3]@4 ~@3] ~@20>")
  .s("gm_string_ensemble_1").gain(0.5).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@19 A@2 B C D ~@14 E ~ F G@2 H G@2 H ~@2 I ~@6 J K L@2 M L ~@7>".pickRestart({
  A: "x!2", B: "x ~@18 x ~@5 x ~@22", C: "~ x ~@23 x ~@22", D: "~ x ~@22", E: "x", F: "~@2 x ~@18 x ~@5 x ~@20",
  G: "~ x ~@7 x ~@6", H: "~ x ~@14", I: "~@13 x ~@2", J: "~@31 x ~@5 x ~@10", K: "~@37 x ~@10", L: "~@13 x ~@23 x ~@10",
  M: "~@7 x ~@5 x ~@23 x ~@10",
})).gain(0.43)

// drums · snare
const snare = s("sd").struct("<~@18 A B C D E ~@17 F G@2 ~ G@2 ~@9 H ~@2 I@4 ~@7>".pickRestart({
  A: "~@12 x!7 ~@5", B: "~ x ~ x", C: "~@12 x ~@20 x ~ x!2 ~@11", D: "~@13 x ~@23 x ~@10", E: "~@13 x ~@24 x ~@9",
  F: "~@14 x ~@24 x ~@8", G: "~@5 x ~@7 x ~@2", H: "~@41 x ~ x ~@4", I: "~ x ~@23 x ~@22",
})).gain(0.43)

// drums · mid tom
const mid_tom = s("mt").struct("<~@41 A ~@7 B ~@6 C ~@9 D ~@2>".pickRestart({
  A: "~@15 x", B: "~@5 x ~ x ~ x ~ x ~ x ~@25 x ~@8", C: "~@23 x ~ x ~@22", D: "~@17 x!18 ~@13",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@18 A ~ B ~@20 C ~@14 D ~@2 E ~@5 F ~@3>".pickRestart({
  A: "~@25 x ~ x ~ x ~ x ~ x ~ x ~@12", B: "~@13 x!2 ~", C: "~@41 x ~ x ~@4", D: "~@3 x ~@9 x ~@34",
  E: "~@25 x ~ x ~ x ~ x ~@16", F: "~@27 x!3 ~ x!4 ~@13",
})).gain(0.29)

// drums · crash
const crash = s("cr").struct(`<
  ~@18 A B ~ B ~ A ~@2 C D E F G ~@9 A ~ H@5 ~ I J ~@6 K@2 ~ K@3 ~@2 L M ~@3
>`.pickRestart({
  A: "~ x ~@22", B: "x", C: "~@40 x!3 ~ x!2 ~ x", D: "x ~ x!11 ~ x!8 ~ x!8 ~ x!16",
  E: "x ~@18 x!11 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@4", F: "~@21 x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~",
  G: "x!2 ~@46", H: "~ x ~@14", I: "~@27 x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", J: "x!2 ~ x!2 ~ x!2 ~@40",
  K: "~@37 x ~@10", L: "~@16 x!32", M: "x!5 ~@43",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct(`<
  ~@11 A@6 B ~ C D E F G H I ~@5 J@7 K ~ L M N ~ O N P Q ~@9 R S T U@2 S V ~@5
>`.pickRestart({
  A: "~ x ~@5 x ~@5 x ~@5 x ~@4", B: "~@7 x ~@5 x ~@5 x ~@4", C: "~@2 x!6", D: "x!6 ~@2",
  E: "~@13 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4", F: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x ~@5 x ~@3",
  G: "~@4 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  H: "~@2 x ~@5 x ~@5 x ~@6 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", I: "x!2 ~@14", J: "x!4", K: "x",
  L: "~@14 x ~@6 x ~@5 x ~@5 x ~@5 x ~@5 x ~@2", M: "~ x ~ x ~ x ~ x ~ x ~ x ~@4", N: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x",
  O: "~@5 x ~ x ~ x ~ x ~ x ~ x", P: "~@9 x ~@3 x ~@2", Q: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", R: "~@43 x ~@4",
  S: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4", T: "~ x ~@5 x ~@5 x ~@5 x ~@28",
  U: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@11 x ~@4",
  V: "~ x ~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@10",
})).gain(0.36)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@49
  [~@13 x!3]
  [x!16]!3
  [x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x]
  [~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~]
  [~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~]
  [~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@13]
  ~@12
>`).gain(0.29)

stack(
  overdriven_guitar, overdriven_guitar_soft, electric_guitar_clean, overdriven_guitar_2, bass, string_ensemble_1, kick,
  snare, mid_tom, high_tom, crash, ride, shaker
)

More by Queen