0:00/0:00
// Love of My Life — Queen
// 77 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 17, 4/4 at bar 17, 2/4 at bar 18, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(77/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(`<
A B C D E F G H I J K L M N O P@3 Q@2 R@4 S@5 T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
AT AU@2 N O AV@7
>`.pickRestart({
A: "e4@2 c4@2 f4@2 c4@2 e4@2 f4 ~ f4@2 c4@2, bb3 a3 bb3 a3", B: "bb4 c4 a4 c4 g4 c4 f4 g4, g3 f3 e3 d3",
C: "e4 c4 c5@2 g4@4, c3@3 ~", D: "a4@2 f4@2 bb4@2 f4@2 a4@2 bb4 ~ bb4@2 f4@2, eb4 d4 eb4 d4",
E: "d5@2 f4@2 [c5,d5]!2 c5@2 bb4@2 f5@2 c5@2 f4@2, bb3 a3 g3 f3, ~@6 d5 ~@9", // Csus2
F: "d4 f4 g4 f4 c4 f4 g4 f4, bb3 ~ a3 ~", G: "[g3,b3,g4] [a3,c4,g4] [b3,d4,g4] [d4,f4,g4]",
H: "[c4,e4] [b3,d4] [c4,e4] ~ c4!2 c4@2, c3 ~, ~@3 [e4,c5]@2 g4@3", // C Bm C
I: "~@2 [c4,e4,a4] ~@2 [c4,e4,a4] ~ a2, a2@4 a2@3 ~, ~@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@2", // Am
J: "[d4,f4] [c4,e4] [d4,f4] [f4,a4]@2 ~ d4@2, d3@3 ~, ~@5 [f4,a4,c5]@3", // Dm C Dm F
K: "[g2,b3,g4] [a2,c4,g4] [b2,d4,g4] [d3,f4,g4]", // G Am7 G G7
L: "[c4,e4] [b3,d4] [c4,e4] [c4,f4,bb4]@2 [c4,e4,bb4]@2 [c4,f4,a4], c3@3 ~", // C Bm C Fsus4 C7 F
M: "[c4,f4,a4]@3 ~ [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 [c4,a4]@4, f3!2, ~@3 [f4,a4,c5]@2 ~@3", // F
N: "[f4,a4] d4 ~ d4 ~ a3 ~ a3, d3 a2, ~ [f4,a4,d5] ~ [c4,e4,a4]", // F Dm Am
O: "bb3 f3 [bb3,d4,f4] ~@2 [f3,a3,c4] f3!2, bb2 f2, ~@3 [f3,bb3,d4]@2 ~ [a3,c4]@2", // Bb F Bb Am
P: "[~ f3 ~ a3 ~ a3 ~@7 c4 [c4,f4] c4 f4 a4 d5 f4 c5 f4 bb4 c5, [bb2,bb3,d4] [a2,c4,e4] [d3,d4,f4] g2@2 c3@2 f3@2 ~@2 g3, ~@3 [f4,g4,bb4] [f4,g4,bb4] [e4,g4] [e4,g4,bb4] ~@5, ~@7 d4@2 d4@2 c4@2 ~@5 bb3@2 a3@2 ~@2]/3", // F5 Bb Am Dm Gm7 Em Edim
Q: "[a4 f4 d4 f4 g4 f4 c4 f4 g4 f4 [g3,b3,g4]@2 [a3,c4,g4]@2 [b3,d4,g4]@2, f3 bb3@2 a3@2 ~@3]/2", // G Am7 G
R: "[[d4,f4,g4]@2 [c4,e4] [b3,d4] [c4,e4] ~ c4!2 c4@2 ~@2 [c4,e4,a4] ~@2 [c4,e4,a4] ~ a2 [d4,f4] [c4,e4] [d4,f4] [f4,a4]@2 ~@3 [g2,b3,g4]@2 [a2,c4,g4]@2 [b2,d4,g4]@2, ~@2 c3@4 ~@4 a2@4 a2@3 ~ d3@6 d4@3 ~@5, ~@5 [e4,c5]@2 g4@3 ~@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~@5 [f4,a4,c5]@3 ~@6]/4", // G7 C Bm C Am Dm C Dm …
S: "[[d3,f4,g4]@4 [c4,e4]@2 [b3,d4]@2 [c4,e4]@2 [c4,f4,bb4]@4 [c4,e4,bb4]@4 [c4,f4,a4]@2 [c4,f4,a4]@3 ~ [a4,c5,f5]@2 ~@4 [a4,c5,f5]@2 [c4,a4]@4 ~@14 a3@2 ~@4 [bb3,d4,f4] ~@5 [f3,a3,c4]@2 f3 ~ f3@2 ~@10 a3@2, ~ c3@3 ~ f3@2 f3@2 d3@2 a2@2 bb2@2 f2@2 [bb2,bb3,d4] [a2,c4,e4] ~, ~@13 [f4,a4,c5]@2 ~@3 [f4,a4]@2 [f4,a4,d5]@2 ~@2 [c4,e4,a4]@2 ~ f3@2 [f3,bb3,d4]@2 ~@4 f3@2 ~ [d3,d4,f4]@2, ~@19 d4@2 d4@2 a3@2 ~ bb3@2 ~@4 [a3,c4]@2 ~@3 a3@2 ~]/5", // G7 C Bm C Fsus4 C7 F Bb …
T: "~@7 c4, g2 c3, [f4,g4,bb4]!2 [e4,g4] [e4,g4,bb4], ~ d4@2 d4@2 c4@2 ~", // Gm7 Em Edim
U: "[a3,f4] f4 a4 c5 e4 c4 f4 c4, f3@2 bb3 a3", V: "e4@2 f4 ~ f4@2 c4@2 c5@2 f4@2 bb4@2 a4@2, bb3 a3 eb4 d4",
W: "bb4 d3 [eb3,f4] f3 d5 f4 c5 f4, ~@2 f4 ~@5 bb3@4 a3@4", // Ebsus2
X: "eb5@2 f4@2 d5@2 f4@2 c5@2 f4@2 [bb4,c5]!4, c4 bb3 a3 g3", Y: "a4 f5 c5@4 ~@2, f3@3 ~, c5 ~@15",
Z: "~@2 [f4,a4,d5] [f4,a4,d5]@2 ~ d4@2, d3@3 ~, [f4,a4]@2 ~@3 [f4,a4]@2 ~, ~ d4@2 ~@5", // Dm F
AA: "~ e4 [c4,e4,a4] [c4,e4]@2 [a3,c4]@2 a3, a2@3 ~, a3 ~@3", // Am C Am
AB: "~@2 d4 [d4,f4]@2 [bb3,d4] ~ f3, bb2@3 ~, [f3,bb3] ~@3, ~ c4@2 ~@3 [bb3,d4]@2", // Dm Bb Bb5 Bb
AC: "~@3 g3 ~ f3 ~ db3, f2@2 ~ [a2,g3,a3,e4], [a3,c4] [bb3,d4] [a3,c4,f4] ~, ~ f3@2 ~@5", // A7 Am Bb F
AD: "~@2 [d4,f4,a4] [d4,f4,a4]@2 f4 ~ d4, d3@3 ~, [d4,f4]@2 ~@3 [d4,a4]@2 ~, ~ a3@2 ~@3 f4@2", // Dm D5
AE: "~@4 [c4,e4,a4]@2 [c4,e4,a4]@4 ~@4 gb3 ~, a2@3 ~, [c4,e4]@2 ~@3 [c4,e4,a4]@2 ~, ~ a3@2 ~@3 a3@2", // Am C Am
AF: "~@2 c4 [a3,c4,eb4]@2 [gb3,a3,c4,d4]@2 c4, gb2@3 ~, gb3 ~@3, ~ a3@2 ~@5", // Adim D7
AG: "[g3,bb3]@3 ~ [bb3,d4,f4]@2 [bb3,d4,f4]@4 ~@2 g2 a2 bb2 b2, g2@5 [bb3,d4,f4]@2 ~", // Gm Bb
AH: "[c2,e4,g4,c5]@3 c3 [f4,a4,c5]@3 c2 [c2,g4,bb4,c5]@4 [c3,e4,bb4,c5]@4, ~@2 c3 ~@5", // C F C7
AI: "f4 c4 f4 c4 e4 c4 f4 c4, f3 a3 bb3 a3", AJ: "e4 c4 f4 c4 bb4 c4 a4 c4, bb3 a3 g3 f3",
AK: "g4 c4 f4 g4 e4 c4 c5@2, e3 d3 c3 ~", AL: "g4@7 ~ g4@2 f4@2 bb4@2 f4@2, ~@2 eb4 d4",
AM: "a4@2 f4@2 bb4@2 f4@2 [bb3,c5]@3 bb4!2 a4 g4 f4, eb4 d4 ~ a3", // Bbsus2
AN: "[e3,c5]@3 bb4!2 a4 g4 f4 d4 c4 e4 c4 f4 c4 g4 c4, ~@2 d4 eb4 bb3!2 a3 e3", // C
AO: "a4 c4 [bb3,d5]@2 [a3,c5]@2 f4@2 g4@2 f4@2 bb4@2 f4@2, f3 ~@3 eb4@2 d4@2", // Bb Am
AP: "a4@2 bb4@2 bb4@2 f4@2 [bb3,d5]@3 c5!2 bb4 a4 f4, eb4 d4 ~ a3", // Bb
AQ: "f5 f4 e5 f4 d5 f4 c5 f4 [a3,f4] [g3,e4] [a3,f4] [bb3,g4] a4 f4 c5 [c4,d5], ~@2 c4@2 bb3@2 a3@2 ~@4 c4@3 ~", // Dm C Dm Eb Csus2
AR: "d5 f4 c5 f4 bb4 c5 a4 f4 eb5 f4 d5 f4 g5 f4 f5 f4, bb3 a3 g3 f3 c4 bb3 eb4 d4",
AS: "[bb4,d5,f5] ~ [bb4,d5,f5] g4 [bb4,d5,f5] g4 [bb4,d5,f5] g4, g3", // Bb
AT: "[c4,f4,a4]@2 [c4,f4,a4] c4 [f4,a4]@3 ~, f3", // F
AU: "~ c5@2 ~ [g4,bb4,c5]@2 e4@2 [g4,bb4,c5]@2 e4@2 [g4,bb4,c5]@2 e4@2, c3, [g4,bb4] ~@7", // C7 Gm
AV: "[~@2 f3@2 ~@2 a3@2 ~@2 a3@2 ~@14 c4@2 [f3,a3,c4]@2 f3@2 [a3,c4,f4]@2 c4@2 [f4,a4,c5]@2 a4@2 [f4,a4,c5,f5]@2 c5@2 [f4,a4,d5]@3 ~ d4@2 a4@2 f4@2 a4@2 f5@2 d5@2 [e3,a3,c4]@4 a3@2 c4@4 e4@2 c4@2 a3@2 [g3,bb3,d4]@2 ~@4 [a2,a3] ~ bb3@2 bb3@2 bb3@2 ~@2 [c3,a3]@16 ~@4, [bb2,bb3,d4]@2 [a2,c4,e4]@2 [d3,d4,f4]@2 g2@4 c3@4 f2@8 d3@8 a2@8 g2@3 ~ bb2@4 ~@10, ~@3 [f4,g4,bb4] [f4,g4,bb4] [e4,g4] [e4,g4,bb4] ~@13 [bb3,d4,g4] ~ [db4,g4] ~@5, ~@7 d4@2 d4@2 c4@2 ~@26 g3@2 ~ [f3,db4]@2 ~ bb3@2 ~@9]/7", // F Dm Am Gm A F Bb Am …
})).s("gm_piano").gain(0.4).pan(0.6)
// other · acoustic bass
const acoustic_bass = note(`<
~@5 A B C D E F G H I J K@3 L@2 M@3 N O@2 P Q@2 R S ~ T@2 S E U V W X Y Z AA AB S ~@9 B S ~@11
>`.pickRestart({
A: "bb3 a3", B: "g3", C: "c3", D: "a3", E: "d3", F: "g2@12 g3@3 ~", G: "c3@3 ~", H: "f3@12 c4 ~ f3@2",
I: "d3@2 ~ d3 a3@4", J: "bb3 f3", K: "[bb3 a3 d4 g3@2 c4@2 f3@2 ~@3]/3", L: "[~ bb3@2 a3@2 g3 a3 b3]/2",
M: "[d4@4 c3@16 a2 ~ e3 ~ a3 ~ a3@8 ~@2 d3@10 ~@2]/3", N: "~@4 g3@4 a3@4 b3@2 d4 ~", O: "[d4@2 c3@8 f3@5 ~]/2",
P: "c4 ~ f3@2 d3@8 a2 ~ e3 ~", Q: "[a3@4 ~@2 bb2 ~ d3 ~ f3 ~ f2@8 bb3@4 a3@4 d4@4]/2", R: "g3@8 c4@3 c4 c4@4",
S: "f3", T: "[~ d3 eb3 f3 bb3@6 bb3@2 a3@2 g3@2]/2", U: "~@2 a2 ~ e3 ~ a3@10", V: "bb2 ~ f3 ~ bb3 ~ bb3@8 ~@2",
W: "f3@3 a3", X: "d3 ~ a3 ~ d4@2 a3@6 ~@4", Y: "a2 ~ e3 ~ a3@2 a3@4 a3@6", Z: "gb3",
AA: "g3@12 gb3 [e3,f3] eb3 [db3,d3], ~@6 g3 ~", AB: "c3@4 d3@4 e3@4 c4 bb3 a3 g3",
})).s("gm_acoustic_bass").gain(0.4)
// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@2 A@2 B@2 C ~@60>".pickRestart({
A: "[~ g3!2 e4!3 g3!2 ~ e5@12 ~@11, c3 ~@3 [g3,c4,e4,g4,c5]@6 ~@6]/2", // C
B: "[~@2 [bb2,f3,d4] [a2,f3,c4], [bb3,d4] [a3,c4] [g3,bb3] [f3,a3] ~@4, ~ f4@2 f4@2 c4@2 f4@2 ~@7]/2", // Bb F Bb Am Gm F
C: "~ b3@12 ~@3, [g2,d3,f3]@3 ~", // G7
})).s("gm_acoustic_guitar_steel").gain(0.3)
// other · overdriven guitar
const overdriven_guitar = note("<~@34 A B@8 ~@14 C D@7 ~@2>".pickRestart({
A: "~@6 f3@2 e3@2 d3@2 ~ bb2 g2 a2, ~@6 c3 ~", B: "f3/8", C: "~@3 c3 ~ e3 d3 c3, ~ f3",
D: "[~@4 a3@4 ~@35 a3 d4 a3 c4@6 ~@4, f3@43 ~@13]/7",
})).s("gm_overdriven_guitar").gain(0.4)
// chords · overdriven guitar
const overdriven_guitar_2 = note("<~@43 A B C D@2 E@7 F G H ~@9>".pickRestart({
A: "~@5 bb4@3", B: "a4@8 g4@3 a4 f4@4", C: "g4@3 a4 f4@4 c5@4 c5@3 b4",
D: "[c5@4 c4@3 b3 c4@13 ab1 ~@2 g4@4 bb4@4]/2",
E: "[d5@3 c5 bb4@2 ~@46 bb4 c5 d5 bb4 f5@40 ~@10 [g3,bb3,d4] [a3,c4,gb4] [bb3,d4,g4] [d4,gb4,a4] [d4,g4,bb4] [g4,bb4,d5], ~@3 f4@53]/7", // Gm Gbdim Gm D Gm
F: "~@14 g4 ~, [f4,a4,c5]", G: "g4@4 a4@3 g4", H: "bb4@3 ~",
})).s("gm_overdriven_guitar").gain(0.5)
// chords · orchestral harp
const orchestral_harp = note("<~@6 A@2 ~@53 B@2 ~@2 C@2>".pickRestart({
A: "[~ g4@3 ~ a4@3 [g3,b3,d4,g4,b4]@4 [g2,b2] d3 ~ [d5,g5]@4 ~@13, [b2,d3,g3,b3,d4]@4 [c3,e3,g3,c4,e4]@4 ~@5 g3@4 ~@15, ~@7 [b3,d4,g4,b4]@2 ~@7]/2", // G G5 G C G
B: "[~@12 [f3,a3,c4]@2 f3@2 [a3,c4,f4]@2 c4@2 [f4,a4,c5]@2 a4@2 [f4,a4,c5,f5]@2 c5@3 ~@3, ~@3 f2@4 ~]/2", // F
C: "[~@12 f4 [c4,f4,a4] [f4,a4] [a4,c5] [c5,f5] [c5,f5,a5] [f5,a5] c6 [c6,f6]@3 ~@9, ~@12 a3@2 c4@2 a4@3 [f5,a5]@3 ~@10, ~@15 f4@3 c5@3 ~@11]/2", // F Am F5 F F5 F
})).s("gm_orchestral_harp").gain(0.4)
// chords · orchestral harp
const orchestral_harp_2 = note("<~@65 A@2>".pickRestart({
A: "[~@13 f4 [c4,f4] [f4,a4] [a4,c5] [a4,c5,f5] [c5,f5] [f5,a5] [a5,c6] [a5,c6,f6]@3 ~@8, ~@14 a3@2 f4@3 c5@3 ~@10, ~@15 c4@3 a4@2 f5@3 ~@9]/2", // F5 F Am F F5 F Am F
})).s("gm_orchestral_harp").gain(0.4).pan(0.9)
// other · guitar harmonics
const guitar_harmonics = note("<~@36 a4 ~@30>").s("gm_guitar_harmonics").gain(0.5)
// other · guitar harmonics
const guitar_harmonics_2 = note("<~@48 A@3 ~@16>".pickRestart({
A: "[~ f5@5]/3",
})).s("gm_guitar_harmonics").gain(0.5)
// chords · overdriven guitar · Gm Dm7 Gm Dm7 Gm F Gm Gbdim …
const overdriven_guitar_3 = note(`<
~@53
[~@12 [d4,g4,bb4] [e4,f4,a4,bb4,c5,d5] [g4,bb4,d5] [a4,bb4,c5,d5,e5,f5]]
[[bb4,d5,g5]@4 [bb4,d5,g5]@3 [a4,c5,f5] ~@2 [g3,bb3,d4] [a3,c4,gb4] [bb3,d4,g4] [d4,gb4,a4] [d4,g4,bb4] [g4,bb4,d5], ~ [d5,g5], ~@4 bb4@3 ~]
[[c5,f5,a5]@4 [c5,f5,a5]@3 [bb4,e5,g5] [c5,f5,a5]@8]
~@11
>`).s("gm_overdriven_guitar").gain(0.4)
// drums · kick
const kick = s("bd").struct("<~@54 x!2 ~@11>").gain(0.3)
// drums · crash
const crash = s("cr").struct("<~@54 x!2 ~@11>").gain(0.3)
stack(
piano, acoustic_bass, acoustic_guitar_steel, overdriven_guitar, overdriven_guitar_2, orchestral_harp,
orchestral_harp_2, guitar_harmonics, guitar_harmonics_2, overdriven_guitar_3, kick, crash
)
More by Queen
We Are The Champions1978 · F major · 95 bpmRadio Ga GaF major · 110 bpmWho Wants to Live ForeverG major · 72 bpmAnother One Bites The DustG major · 115 bpmBohemian RhapsodyB♭ major · 70 bpmUnder PressureD major · 113 bpmCrazy Little Thing Called LoveD major · 233 bpmFriends Will Be FriendsG major · 74 bpm
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.