Strudelify

The Great Pretender

Freddie Mercury

KeyG majorTempo104 bpm
0:00/0:00
// The Great Pretender — Freddie Mercury
// 104 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 112 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/3)

// 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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@4 A@2 B@2 C@2 D E F@2 G H I J K L M N O P Q R@3 S@3 T U@2 V W ~@9 M N O P Q R@3 S@3 X Y@2 Z AA@2 AB AC AD ~@41 AE@5
  ~
>`.pickRestart({
  A: "[~ b3@23 [e3,c4]@12 [d3,f#3,a3]@12, g3@7 ~@5, d3 ~]/2", B: "[d3 b3@22 ~ [b3,d4]@23 ~, g3@23 f3@23 ~@2]/2",
  C: "[~ e4@47, [c3,g3,c4]]/2", D: "~ d4@23, [d3,g3,b3]", E: "~ d5@23, [f4,g4,b4]",
  F: "[[c3,g3,c4]@23 ~@2 d4@23, ~@23 d3@24 ~, ~ a3]/2", G: "d3 d4@23, [g3,b3]",
  H: "[c3,g3,c4,e4]@11 ~@2 e4@11, ~@11 c#3@13, ~ [g3,c#4]", I: "[d3,g3,b3]@11 ~", J: "[d3,f#3,a3]@7 ~",
  K: "[b2,d3]@18 ~@2 [c3,e3]@3 ~, g3", L: "[b2,d3,g3]@3 ~ [d3,g3,a3]@4", M: "[g3,b3,d4]@20 [g3,b3,d4]@3 ~",
  N: "[c4,e4]@5 ~ [a3,c4]@5 ~, g3@11 ~", O: "[g3,b3,d4]@23 g3", P: "~ f4@21 ~@2, [b3,d4]@23 ~", Q: "[g3,c4]@19 ~@5",
  R: "[~ g4@18 ~@5 [b3,d4]@18 ~@7 f4@22 ~, [g3,c4,e4]@23 g3@19 ~@5 g3@24 ~, ~@2 [b3,d4]]/3", // Bm C Bm
  S: "[[g3,c4,e4]@21 ~@4 f#4@17 ~@6 [d4,g4]@18 ~@6, ~@23 a3@18 ~@6 b3@18 ~@7, ~@4 d4@3 ~@5]/3", // C G5
  T: "[g3,c4,e4]@3 ~ [g3,c#4,e4,g4]@4", U: "[[b3,d4,g4]@20 ~@5 f#4@18 ~@5, ~@23 a3@19 ~@6, ~@6 d4@5 ~]/2",
  V: "[b3,d4]@23 ~, g4@19 ~@5", W: "[b3,d4,f4] ~ [b3,d4,f4] ~ [b3,d4,f4] ~ [b3,d4,f4] ~ [b3,d4,f4] ~ [b3,d4,f4]@2",
  X: "[g3,c4,e4]@9 ~@7 [g3,c#4,e4,g4]@8", Y: "[[b3,d4]@20 ~@5 f#4@18 ~@5, g4 ~@22 a3@19 ~@6, ~@6 d4@5 ~]/2",
  Z: "[b3,d#4,f#4]@7 ~", AA: "[~ g4@18 ~@5 [b4,d5]@22 ~@2, [c4,e4]@19 ~@4 g4@21 ~@4]/2", AB: "[d4,f#4]@11 ~, a4@3 ~",
  AC: "[g4,b4,d5]@11 ~", AD: "[f4,b4,d5]", AE: "[~@25 g#4@94 ~, ~@11 d#3@49, ~@23 g#3@97, ~ [c4,d#4]@4]/5",
})).s("gm_epiano2").gain(0.4)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D E F G H I@2 E J I K L M N O P Q E F G H I@2 E J I R L M N O P J I@2 G S I T U@3 E F G H I@2 E V I K W X Y Z AA
  AB K AC AD AE AF AG AH AI AJ AK C AL AM AN AO AP AQ AR AS AT AO AU AV AW AX AY AZ BA BB AY BC BD@3 ~@17
>`.pickRestart({
  A: "d2@11 ~ d3@2 ~@2 a1@3 ~ b1@3 ~", B: "d2@12 d3@3 ~ a1@3 ~ b1@3 ~", C: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~",
  D: "d2@7 ~@4 a1 ~ g1 ~@10, ~@7 c#2@2 b1@2 ~@13, ~@4 c2 a#1 g#1 ~@5", E: "g1@17 ~@3 g1@3 ~", F: "a1@11 ~ d2@11 ~",
  G: "g1@17 ~@3 g1@2 ~@2", H: "g2@17 ~@3 g1@2 ~@2", I: "c2@17 ~@3 c2@3 ~", J: "g2@17 ~@3 g1@3 ~", K: "d2@17 ~@3 d2@3 ~",
  L: "g2@12 ~@4 e2@3 ~ d2@3 ~", M: "c2@11 ~ c3 c#3@11", N: "d3@17 ~@3 d3@3 ~", O: "d3@14 ~@2 a2@3 ~ d3@3 ~",
  P: "g2@17 ~@3 d2@3 ~", Q: "g2@11 ~ d2@3 ~ e2@3 ~ d2@3 ~", R: "d2@14 ~@2 f#2@3 ~ d2@3 ~",
  S: "g2@11 ~ g1@3 ~ a1@3 ~ g1@4", T: "a1@15 ~ b1@3 ~ c2@3 ~", U: "d2@3 ~ d2@3 ~", V: "g2@11 ~ d2@3 ~ b1@3 ~ g1@3 ~",
  W: "g2@12 g3@11 ~", X: "c3@14 ~@2 c#3@7 ~, ~@16 c3 ~@7", Y: "d3@23 ~", Z: "~@12 d3@7 ~ d3@4, d2@23 ~",
  AA: "b1@17 ~@3 b1@3 ~", AB: "c2@11 ~ c#2@3 ~ e2@3 ~ c#2@4", AC: "d3@17 ~@3 d2@4", AD: "g1@23 ~", AE: "g2@23 ~",
  AF: "c2@11 ~ c3@4 ~@4 g2@3 ~", AG: "c2@15 ~ c2@3 ~ g1@3 ~", AH: "g2@8 g1@7 ~ g2@3 ~ g1@3 ~",
  AI: "g1@11 ~ g1@3 ~ a1@3 ~ g1@4", AJ: "c2@12 ~@4 g1@4 c2@3 ~", AK: "a1@15 ~ d2@3 ~ a2@3 ~",
  AL: "d2@3 ~ d2@3 ~ d2@3 ~ d3@3 ~ d3@3 ~ d2@3 ~", AM: "d#2@4 d#2 ~ d#2@4 d#2 ~ d#2@3 ~ d#2@3 ~ d#2@3 ~",
  AN: "d#2@3 ~ d#2@3 ~ d#2@3 ~ d#2@3 ~ d#2@3 ~ d#2@3 ~", AO: "g#1@17 ~@3 g#1@3 ~", AP: "a#1@11 ~ d#2@11 ~",
  AQ: "g#1@16 d#2@4 ~ a#2@3, ~@10 g#2 ~", AR: "g#2@15 ~ d#2@3 ~ g#2@3 ~", AS: "c#2@17 ~@3 g#1@3 ~",
  AT: "c#2@15 ~ d#2@3 ~ f2@3 ~", AU: "f#2@3 ~ f#2@3 ~ f2@3 ~ d#2@3 ~ c2@3 ~ g#1@4", AV: "c#2@14 ~@2 c#2@3 ~ c#2@3 ~",
  AW: "d#2@15 ~ f2@3 ~ g2@3 ~", AX: "g#2@6 ~@2 c3 ~@3 c2@11 ~", AY: "c#2@11 ~ d2@11 ~", AZ: "d#2@16 f3@3 ~ e3@3 ~",
  BA: "d#3@23 ~", BB: "c2", BC: "d#2", BD: "d#3/3",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C@2 ~@32 D E F G H I J K L ~@12 M N J O P@4 Q@2 R S ~@4 T U ~@4 V W X Y Z AA@3 AB@2 ~ AC ~@5 AD AE@2 AF AG ~@11
>`.pickRestart({
  A: "[f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,d5]@2 ~@10, ~@12 a4 ~@11", // D
  B: "[f4,g#4,b4] ~@3 [f4,g#4,b4] ~@3 [f4,g#4,b4] ~@3 [f4,b4]@2 ~@10, ~@12 g#4 ~@11", // Fdim
  C: "[[f#4,a4,c5,f#5,c6] ~@3 [f#4,a4,c5,f#5,c6] ~@3 [f#4,a4,c5,f#5,c6] ~@3 [e4,g4,c#5,e5,c#6] ~@2 c#6 [e4,g4,c#5,e5] ~@2 [e4,c#5] [g4,f5] c#6@2 ~ [f#4,a4,c5,f#5] ~@23, ~@20 [a5,c6]@2 ~ d6@2 ~@23]/2", // F#dim C#dim C#m G7 F#dim Am
  D: "~@4 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@11", // C
  E: "~@4 [e4,g4,c5,e5] ~@3 [e4,g4,c5,e5] ~@3 [g4,c5,e5] ~@11, ~@6 e4 ~@5", // C
  F: "~@4 [d5,g5,b5] ~@3 [d5,g5,b5] ~@3 [d5,g5,b5] ~@11", G: "~@4 [d5,f5,b5] ~@3 [d5,f5,b5] ~@3 [d5,f5,b5] ~@11",
  H: "~@4 [c5,e5] ~@3 [c5,e5] ~@3 [c5,e5] ~@3 c5 ~@7", I: "~@4 [c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [c5,e5,g5] ~@11", J: "b3",
  K: "[a3,f#4] [b3,f4]", L: "[c4,f#4] c#4", M: "d4", N: "a3@23 ~", O: "c4 c#4", P: "[~@2 g3 f3, d4@95 ~, ~ b3]/4",
  Q: "~@4 [g4,c5,e5] ~@3 [g4,c5,e5] ~@3 [g4,c5,e5] ~@11", R: "~@4 [d5,g5,b5] ~@3 [d5,g5,b5] ~@3 [d5,g5,b5]@2 ~@10",
  S: "~@4 [d5,f5,b5] ~@3 [d5,f5,b5] ~@3 [d5,f5] ~@11, ~@6 b5 ~@5", // Bdim Dm
  T: "a#2@2 ~ c#3@2 d#3@2 f3@2 g3@2 g#3@2 a#3@2 c4@2 g#3@2 a#3@2 c4@2 ~, ~@2 c3@3 ~@19",
  U: "[a#3,c#4]@2 c4@2 c#4@2 a#3@2 ~@2 d#4@2 [g4,g5]@2 [d#4,d#5]@2 ~@5 [d#5,d#6]@2 ~, ~@4 [f4,f5] ~@3 [a#4,a#5] g4 f5 ~, ~@9 d#5@2 ~@6 g5@2 f6@2 ~@3", // A#m G D# F A#
  V: "~@4 [f5,g#5] ~@3 [c#5,f5] ~@3 g#5@2 ~@10, ~@12 f5 ~@11", W: "~@4 [f5,g#5] ~@3 [c#5,f5] ~@3 [f5,g#5]@2 ~@10",
  X: "~@4 [d#5,g#5] ~@3 [c5,d#5] ~@3 [f#4,g#5] ~@11, ~@4 f#4 ~@7", // G#5 Cm F#sus2
  Y: "~@4 [f#4,d#5,g#5] ~@3 [f#4,c5,d#5] ~@3 [f#4,d#5,g#5] ~@11", Z: "[c#4,f5,f6]",
  AA: "[[g5,g6]@2 ~ c4 c#4 [d4,f5,f6], d#4@37 ~@35, ~@2 [g#5,g#6]@3 ~]/3", AB: "[d#4,d#5,d#6]/2", AC: "~ [f4,g#4,d5]",
  AD: "g#2", AE: "[g#2@28 g#2@8 g#2 ~@11]/2", AF: "~ g#4, g#2@23 ~, c5@5 ~@3", AG: "g#2@11 ~",
})).s("gm_string_ensemble_1").gain(0.48)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@44 A B ~@43 C D E@4 ~@3 F@2 G H I J@4 ~@5>".pickRestart({
  A: "~ g4", B: "g4", C: "[g4,c5]", D: "[g#4,c#5] ~", E: "[c5 a#4@3, d#5]/4", F: "[~ c#5 ~@2, f5@19 ~@5]/2", G: "c4",
  H: "b3", I: "g#3", J: "c#3/4",
})).s("gm_string_ensemble_1").gain(0.32)

// other · viola
const viola = note("<~@103 A B@7 ~>".pickRestart({
  A: "~@6 g#3@2 c#4 e4 g#4 e5, ~@4 c#3@13 ~@7",
  B: "[~@2 a#5 ~ a#5 g#5 a#5 g#5 a#5 g#5 a#5 g#5 a#5 g#5 ~ a#5 g#5 a#5 g#5 a#5 ~ a#5@2 g#5@142 ~@3, g#5@2 ~@8 g#5 ~@73]/7",
})).s("gm_viola").gain(0.64)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  A@4 B C D@2 E@2 D@2 F G B H I@2 J@2 B C D@2 E@2 D@2 F G B H I@2 K L M@2 N@2 O@2 K P@2 K Q N@2 R@2 S@2 T U V W X Y Z AA
  AB AC AD AE M@2 AF@2 AG AH AD AI AJ@2 AK AL AM AN AO@2 AP@2 AL AQ AM AR AS@2 AT@2 AU@5 AM AV@3 AW AX AY AZ@4 BA@5
>`.pickRestart({
  A: "[~@48 d4@3 e4@8 d4@10 ~@27, d3@73 ~@23]/4", B: "[b3,d4,g4,b4]", C: "[c4,e4] [a3,c4,f#4], a4",
  D: "[g4 f4, [b3,d4,b4]]/2", E: "[c5@24 g3@23 ~, [c4,e4], g4@2 ~]/2", F: "[g3,c4,e4,g4]", G: "[a3,d4,f#4,a4]",
  H: "[c4,c5] [c#4,c#5], [e4,g4]", I: "[[g3,b3,g4,b4] [f#3,a3,f#4,a4], d4]/2",
  J: "[~@5 [e5,g5,c6] [d5,g5,b5]@3 [c5,f#5,a5]@3, [g3,d4]@47 ~, [b3,g4] ~]/2", K: "[d4,g4,b4]", L: "[d4,f4,b4,d5]",
  M: "[[e4,g4,c5]@47 ~]/2", N: "[g4 f4, [d4,b4]]/2", O: "[e4,g4,c5]/2",
  P: "[a4@12 b4@12 c5@12 [e4,g4,c#5]@11 ~, [d4,f#4]@17 ~@7]/2", Q: "[e4,a4,c5] [d4,f#4,a4]", R: "[[g4,c5,e5]@15 ~]/2",
  S: "[~ [g5,b5], [g4,b4,d5]@47 ~]/2", T: "[c5,e5,g5]@11 ~", U: "[d5,a5]@11 ~, f#5@19 ~@5", V: "[b4,g5]@23 ~, d5@5 ~",
  W: "[c5,g5]@2 c#5, e5, ~@16 g5 ~@7", X: "[b4,d5]@11 ~, g4@19 ~@5", Y: "[d4,f#4,a4]@7 ~", Z: "[d#4,f#4,b4]",
  AA: "e5@12 g5@11 ~", AB: "[g4,b4,d5]", AC: "[d4,f#4,a4]", AD: "[g4,b4,d5]@23 ~", AE: "[f4,b4,d5]",
  AF: "[g4@24 f4@23 ~, [b4,d5]@47 ~]/2", AG: "[c5,e5,g5]@23 ~", AH: "[a4,c5,e5]", AI: "[d3,a3,d4,f#4,a4]@23 ~",
  AJ: "[~@24 c#5@12 [g3,b3,g4,b4]@11 ~, [d#3,d#4,f4]@47 ~, [g#3,c#4,a#4]@3 ~]/2", AK: "[c4,d#4,g#4]",
  AL: "[c#4,f4,g#4]", AM: "[d#4,g#4,c5]", AN: "[f#3,d#4,f#4,a#4,d#5]", AO: "[c#4,f4,g#4]/2",
  AP: "[g#4 f#4, [c4,d#4]]/2", AQ: "[d#4,g4,a#4]", AR: "c#4 d4, [f4,g#4]", AS: "[c5 [f4,a#4], [g#4,d#5]]/2",
  AT: "[[e4,g4,c5]@23 [f4,g#4,c#5]@12 ~ b3@12, ~@35 [f4,d5]@12 ~]/2", // C C# Dm
  AU: "[[g#2,g#3,c5] [d#3,f4,a#4]@4, [g#4,d#5], ~ d#2@3 ~]/5", // G# D#sus2 G#5
  AV: "[[f4,a#4,c#5]@2 [f#4,c5,d#5,f6] [c5,c#5,d#5,c#6] [d#4,g#4,c6] [d#4,g#4,g#5], g#4@2 c5, ~@24 g#3@47 ~, ~@36 a#4@35 ~]/3", // A#m Cdim Cm G# G#5
  AW: "[g#3,c4,d#4]", AX: "[g#3,b3,d4,e4]", AY: "[c#3,g#3,c#4,f4]", AZ: "[g#3,b3,e4,g#4]/4",
  BA: "[[g#2,g#3,c4,d#4,g#4]@33 ~@7]/5", // G#
})).s("gm_string_ensemble_2").gain(0.48)

// other · timpani
const timpani = note("<~@95 [d#3!24] [d#3 ~@23] ~@15>").s("gm_timpani").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~@4 A@31 B A@8 B A@18 B ~ A@7 C D ~ A@14 B ~@22>".pickRestart({
  A: "x ~@4 x", B: "x", C: "x ~ x", D: "~ x ~@4",
})).gain(0.56)

// drums · rim
const rim = s("rim").struct("<~@4 [~ x]!31 ~@77>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<A@3 B ~@32 C@27 ~@2 C@8 D E C@14 ~@23>".pickRestart({
  A: "x ~@4 x", B: "x", C: "~ x", D: "~@3 x ~ x!2 ~@5", E: "x!3 ~ x ~@2 x ~ x ~@2",
})).gain(0.56)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<[~@2 x!3 ~]!2 [~ x!4 ~] ~@109>").gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@35 A ~@8 A ~@19 B ~@8 C B ~@37>".pickRestart({
  A: "~@4 x!2", B: "~@10 x!2", C: "x ~@4 x",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B@2 C B@6 C B@5 C B@7 C B@3 C B C B D@10 B C B@5 C@2 B@2 C B@6 ~@2 D@7 ~@3 D@7 ~@30
>`.pickRestart({
  A: "x", B: "x ~@2 x ~ x", C: "x!2", D: "~ x",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 [~ x!2 ~ x ~]!31 ~@10 [~ x!2 ~ x ~]!17 [~ x ~@2 x ~] ~@49>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@35 A ~@8 A ~@18 B C ~@7 D E F ~@37>".pickRestart({
  A: "~@7 x!2 ~@3 x ~@11", B: "~@7 x!2 ~@3 x ~@5 x ~ x ~@3", C: "x ~@2 x!7 ~@2", D: "~@3 x", E: "~@2 x", F: "~@3 x!2 ~",
})).gain(0.4)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@35 [~@4 x!2 ~@18] ~@8 [~@4 x!2 ~@18] ~@18 [~ x ~@2] ~@48>").gain(0.16)

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

// drums · crash
const crash = s("cr").struct("<~@36 A ~@23 A ~@2 A ~ A ~@3 A ~ A B C D A ~@13 A ~@22>".pickRestart({
  A: "x", B: "x ~ x!2", C: "x ~@2 x ~ x!2 ~@5", D: "x!3 ~ x ~@7",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<~@36 A B@7 C ~@20 A B@3 A B A D ~@2 A B@13 E F ~@21>".pickRestart({
  A: "~ x!5", B: "x!6", C: "x", D: "~ x!2 ~ x ~", E: "~ x!11", F: "x!7 ~@5",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@31 ~ A@27 ~@2 A@8 ~@2 A@14 ~@23>".pickRestart({
  A: "~ x",
})).gain(0.56)

stack(
  epiano2, bass, string_ensemble_1, string_ensemble_1_soft, viola, string_ensemble_2, timpani, kick, rim, snare,
  snare_soft, low_tom, hihat, hihat_soft, mid_tom, mid_tom_soft, open_hat, crash, ride, tambourine
)

More by Freddie Mercury