Strudelify
Living on My Own cover art

Living On My Own

Living on My Own

Freddie Mercury

KeyA minorTempo123 bpm
0:00/0:00
// Living on My Own — Freddie Mercury
// 123 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 15 "Basso 2" synth bass 2 (copy of ch 2 "Basso 1" synth bass 2, 0.125 beats late)
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~@25 A B C D A E F@2 G ~@11 A B C D A E H@3 ~@19 A B C D A E H@3 ~@3 I J I J I J I J I J I J I J I J I J I J I J I J
  ~@4
>`.pickRestart({
  A: "[g3,c4,e4]", B: "[g3,b3,d4]@3 [g3,b3,e4]", C: "[a3,d4,f4]", D: "[g3,d4,g4]", E: "[f#3,b3,d#4]", F: "[g3,b3,e4]/2",
  G: "[e1,e2] ~@7", H: "[~@3 [e1,e2]@2 ~, [g3,b3,e4]@2 ~]/3",
  I: "[a4,c5,e5]@2 a3 [a4,c5,e5]@2 a3 [a4,c5,e5]@2 a3 [a4,c5,e5]@2 ~ [g4,b4,d5] ~ [a4,c5,f5] ~, a2@15 ~, ~@11 a3@5", // Am G F
  J: "[a4,c5,e5]@2 a3 [a4,c5]@2 ~@11, a2@5 ~@11, ~@3 e5 ~@12", // Am
})).s("gm_piano").gain(0.25).pan(0.6)

// bass · synth bass 2 · "Basso 1"
const bass = note(`<
  ~ A@10 B C D E A@4 B C D E A@2 F G H I F G J@2 ~@2 A@4 B C D E A@2 F G H I F G J@2 ~@2 A@18 F G H I F G J@2 ~@2 K@2
  A@24 L ~@3
>`.pickRestart({
  A: "a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2", B: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1@2 d1 ~",
  C: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~ g1 ~", D: "d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2@2 c2 ~",
  E: "d2 ~@2 d2 ~@2 d2 ~@2 d2 c2 ~ d2@2 c2 ~", F: "c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@2 c2@2 c2 ~",
  G: "b1 ~@2 b1 ~@2 b1 ~@2 b1 ~@2 b1@2 b1 ~", H: "d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2@2 d2 ~",
  I: "g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1@2 g1 ~", J: "e2 ~@2 e2 ~@2 e2 ~@2 e2 ~@2 e2@2 e2 ~", K: "b1@2 ~ b1 ~@2 b1 ~@9",
  L: "a1 ~@15",
})).s("gm_synth_bass_2").gain(0.45)

// chords · piano · "Piano 2"
const piano_2 = note("<~@63 A B@3 C D@2 E F@2 ~@15 G ~ H ~ I J K@3 ~ L@2 M@2 N ~ O P Q R Q ~@4>".pickRestart({
  A: "~@2 [e4,a4] [e4,a4,c5] d5 c5 ~ [d#5,a5] ~ [e5,a5] ~@6, [a2,a3] ~, ~@2 g5 ~@5", // A5 Am D#dim A5 A
  B: "[~@2 [d5,g5] c5 [d5,g5] c5 ~ [d#5,g5,a5] ~ d5 c5 a4 [a4,c5] d5 c5 a4 [d#5,g#5,a5] [e5,a5] ~ [e5,a5]@2 ~@4 [a6,c7]!5 ~ c7@2 [c6,d6,e6,f6,g6] b5 ~@3 d5 d#5 e5 c6 e5 c6 e5 a5 e5 d5, [a2,a3]@21 ~@10 a6 ~@16]/3", // G5 Am7b5 Am G# A5 Am C A
  C: "[d#5,a5] e5 [d#5,a5] [e5,a5]@2 ~@11", // D#dim A5
  D: "[d5 d#5 c5 [a3,g5]@2 ~ d5 d#5 c5 [c5,g5]@2 a3 [c5,d5] ~ [d5,g5] ~@2 c5 b4 a#4 a4 g#4 a4 c5 e5 g5 f#5 e5 d#5 e5 g5 b5, g5@2 ~ a2@19 ~@10, ~@3 d5 ~@2 g5@2 ~ d5 ~@2 g5@2 c5@2 ~@16]/2", // A7 C5 Csus2 G5
  E: "d6 c#6 b5 c6@3 ~@3 [e5,a5]!4 d5 [d#5,a5] d5", // A5 D#dim
  F: "[[c5,a5] a4 [c5,a5] [a4,a5] d6 [a5,d#6] ~ [a5,d6] [a5,d#6] ~ [a5,d6] [a5,d#6] ~ [a5,d6] [a5,d#6] ~ [a5,d6] [a5,d#6] [a5,d6] [a5,d#6] d6 [a5,d#6] [a5,d6] c6 a5 g5 c6 g5 e5 d5 c5 b4, ~@6 a4@2 ~ a4@2 ~ a4@2 ~ a4@8 ~@9]/2", // F A Adim D5 Adim D5 Adim D5 …
  G: "~@8 d5!2 c5 [d5,a5] ~ [d5,a5] c5 a4, ~@4 a5 ~@3", H: "~@5 [e4,g#4] ~ [e4,a4] [e4,c5]!2 c5 [e4,c5]!2 ~@3",
  I: "~@6 [e6,a6] ~ [d#6,g6,a6] [e6,a6] [d6,a6] [d#6,a6] d6 c6 a5 g5", J: "e5 ~@15",
  K: "[~@5 [e4,g4] ~@2 [e4,g4] a4 g4 e4@8 ~@18 a3 [e4,c5] a3 e4 a3@2 [e4,c5]@2 ~ [e4,a4,c5] ~, ~@7 a2@40 ~, ~@7 a3@4 ~@29 c5@2 ~ a4 ~ a3@2 ~]/3", // Em C Am
  L: "[~@6 [e5,a5] d#5 d5 [d#5,a5] d5 c5 [d5,g5] c5 a4 [a4,e5]@3 ~@14]/2", // A5 D#dim G5 A5
  M: "[~@11 [b3,e4] g4 a2 [b3,e4,b4] ~@17, ~@5 a1@6 ~@5, ~@10 a2@3 ~@19]/2", // E5
  N: "[a4,e5]!2 ~ [a4,e5,a5] a3 [a4,e5,a5] d5 a3 [a4,e5,a5]!2 a3 [a4,e5,a5] a3 [a4,e5] [a4,d5] ~, a5@2 ~@11 a5@2 ~, ~ a2@14 ~", // A5 D5
  O: "~@9 d3 d#3 e3 g3 g#3 a3 c4", P: "d4 d#4 e4 g4 a4 [c5,e5,g5] [e5,a5] g5 [c6,a6]!2 ~ [c6,a6] ~ [c6,a6] [a5,c6] ~",
  Q: "~@2 [d5,a5] d#5 [e5,a5] [e5,g5] [e5,a5] g5 [c6,a6]!2 ~ [c6,a6] ~ [c6,a6] [a5,c6] ~", // D5 A5 Em A5 F Am
  R: "~@2 [d5,a5] d#5 [e5,a5] [e5,g5] [e5,a5] g5 [c6,a6]!2 ~ [c6,a6] ~ [c6,a6] ~@2", // D5 A5 Em A5 F
})).s("gm_piano").gain(0.42).pan(0.4)

// chords · piano · "Piano 2" · soft notes
const piano_soft = note("<~@64 A ~ B ~ C ~@3 D ~@17 E ~@3 F ~@5 G@2 H ~@2 I@2 J I ~@4>".pickRestart({
  A: "~@4 c5 ~@8 a4 ~@2", B: "~ b6 [c5,d5,e5,f5,g5,a5] [f4,g4,a4,b4] e4 ~@11", C: "~@4 d#5 c5 ~ a3 ~@2 d#5 ~@2 d#5 ~@2",
  D: "~@4 a5 ~@11", E: "~@8 a4!2 [e4,a4] a4!2 [e4,a4,c5]@3", F: "~@9 e4 ~@6", G: "[~@12 [b3,e4] ~@2 a2@4 ~@13]/2",
  H: "~@6 [a4,e5,a5] ~@9", I: "~@7 e5 b5 ~@7", J: "~@7 e5 b5 ~@5 [a5,c6] ~",
})).s("gm_piano").gain(0.24).pan(0.4)

// chords · pad new age · "Fantasia"
const pad_new_age = note("<~@10 A@5 ~@3 A@5 ~@15 B@7 ~@68>".pickRestart({
  A: "[~@4 b4@7 ~ d5@7 ~, ~@14 b3@29 ~@4 [f4,a4]@29 ~@4, ~@15 [d4,g4]@29 ~@2 d4@29 ~@5]/5", // F G5
  B: "[~@16 b4@28 ~@4 d5@30 ~@2 [a4,e5]@29 ~@3, ~@14 b3@29 ~@4 [f4,a4]@31 ~@34, ~@15 [d4,g4]@29 ~@2 d4@31 ~@2 [a3,e4]@31 ~@2]/7", // A5 F G5 A5
})).s("gm_pad_new_age").gain(0.31).pan(0)

// other · pad metallic · "Metal Pad"
const pad_metallic = note("<~@25 A B C@2 D E F@2 ~@12 A B C@2 D E F@2 ~@20 A B C@2 D E F@2 ~@32>".pickRestart({
  A: "c5", B: "b4@3 c5", C: "[d5@3 g5]/2", D: "e5", E: "d#5@2 e5 f#5", F: "g5/2",
})).s("gm_pad_metallic").gain(0.48).pan(0.6)

// other · timpani · "Timpano"
const timpani = note("<~@109 [a1 ~@15] ~@3>").s("gm_timpani").gain(0.48)

// bass · synth bass 2 · "Basso 3"
const bass_2 = note("<~ A@8 B@3 C D E F@5 C D E G@2 ~@10 F@5 C D E G@2 ~@10 A@16 G@2 ~@10 H@2 A@24 I ~@3>".pickRestart({
  A: "[~ a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1]/8",
  B: "[~ a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1@2 d1]/3",
  C: "~ g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~ g1", D: "~ d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2@2 c2",
  E: "~ d2 ~@2 d2 ~@2 d2 ~@2 d2 c2 ~ d2@2 c2",
  F: "[~ a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 g1 ~@2 g1 ~@2 g1 ~@2 g1 ~@2 g1@2 d1]/5",
  G: "[~ a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 a#1@2 a1 ~@2 a1 ~@2 a1 ~@2 a1@2 ~ g1@2 ~]/2", H: "~ b1@2 ~ b1 ~@2 b1 ~@8",
  I: "~ a1 ~@14",
})).s("gm_synth_bass_2").gain(0.2).pan(1)

// drums · kick
const kick = s("bd").struct("<~@3 [x!4]!106 x ~@3>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@3 A@30 B C A@18 B C A@54 ~@4>".pickRestart({
  A: "~ x!3 ~ x!3", B: "~ x ~ x", C: "~@4 x ~@5 x!3 ~ x!2",
})).gain(0.32)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!30
  ~
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!19
  ~
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!55
  ~@4
>`).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@3 [~ x ~ x ~ x ~ x]!106 ~@4>").gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@3 [x!16]!106 ~@4>").gain(0.32)

stack(
  piano, bass, piano_2, piano_soft, pad_new_age, pad_metallic, timpani, bass_2, kick, snare, snare_soft, hihat,
  open_hat, tambourine
)

More by Freddie Mercury