0:00/0:00
// A Kind of Magic — Queen
// 126 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 138 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): Distortion Guitar.
setcpm(126/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 · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
~@23 A ~ B@2 C@8 ~ D ~@24 A ~ E@2 F@3 G H@2 ~@41 I G J@2 I G K@2 ~@18
>`.pickRestart({
A: "~@3 a4@5, ~ a3@7, ~ e4@3", B: "[~@3 a4@6 ~@7, ~ b3@8 ~@7, ~@2 f#4@7 ~@7]/2",
C: "[~@8 a4@8 ~@6 a4@14 ~@12 [f#3,a3,c#4]@7 ~ [a3,c#4]@8 [a3,c#4]@12 ~@4 [f#3,a3,d4]@28 ~@4 c#4@16, ~ b3@63, ~@4 d4@12 a3@20 ~@28 f#3@9 ~@55, ~@6 f#4@11 ~ c#4@18 ~@20 f#4@20 ~@52, ~@5 e4@27]/8", // F#m A D
D: "[g#3,b3,e4]@15 ~", E: "[~@3 a4@6 ~@7, ~@2 b3@17 ~@13, ~@2 f#4@7 ~@7]/2",
F: "[~@11 a4@7 ~@5 [e4,a4,c#5], ~@2 b3@13 ~ a3@20 ~@12, ~ d4@3 ~ e4@4 ~@3, ~@6 f#4@11 ~@31, ~@4 a4@5 ~@15]/3", // A
G: "[f#4,a4,d5]@13 ~ [e4,a4,c#5]@2", // D A
H: "[[f#4,d5]@2 [e4,c#5]@2 [f#4,d5]@3 ~ [f#4,a4,d5] ~ [e4,a4,c#5] ~ [f#4,a4,d5]@2 [e4,a4,c#5]@14 ~@4, a4@7 ~@25]/2", // D C#m D A D A
I: "~@7 [e4,a4,c#5]", // A
J: "[[f#4,a4,d5]@2 [e4,a4,c#5]@2 [f#4,a4,d5]@3 ~ [f#4,a4,d5]@2 [e4,a4,c#5]@2 [f#4,a4,d5]@2 [e4,a4,c#5]@17 ~]/2", // D A D A D A
K: "[[f#4,a4,d5]@2 [e4,c#5]@2 [f#4,a4,d5]@3 ~ [f#4,a4,d5]@2 [e4,a4,c#5] ~ [f#4,a4,d5] ~ [e4,a4,c#5]@17 ~]/2", // D C#m D A D A
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.7)
// other · overdriven guitar
const overdriven_guitar = note(`<
~@29 A B ~@2 C D ~@10 E ~@9 F@2 ~ G H ~@7 I ~@3 J K L M N@2 O@2 P Q R S T U V W@2 ~@32 X Y Z AA AB AC Y AD AE AF@2 AG
AH AI AJ@2 ~@2
>`.pickRestart({
A: "e5 c#5@3 [c5,c#5] b4 a4 f#4 c4 c#4 e4 f#4 a4@4", B: "a4 ~@15", C: "~@2 d4 ~ f4 f#4 a4 ~ b4@4 a4@3 e4",
D: "f#4 ~@15", E: "~@6 [e3,a3]@9 ~", F: "[~@3 c#6@7 ~@6]/2", G: "~@8 c#5 d5 c#5 d5 c#5 d5 c#5 d5",
H: "c#5 d5 c#5 d5 c#5 d5 c#5 d5 c#5@7 ~", I: "[c#5,d5]@2 c#5@2 b4 a4 f#4 e4 a3@6 a3 ~, ~@8 c#4 ~@7",
J: "[e5,a5] ~ [e5,a5]@2 f#5 e5 d5 c#5 d5 e5 d5 c#5 c5 b4 a4 f#4", K: "a4@2 f#4 a4@11 a4 ~",
L: "~@5 c#6 b5 a5 f#5 f5 e5 d5 b4 a4 f#4 f4, ~@2 d6 ~@5", M: "~@9 a3 c4 c#4 e4 f4 f#4 a4, e4@3 ~",
N: "[~ a4 f#4 a4@10 ~ [e4,c#5]@2 [f#4,d5]@13 ~ [e4,a4,c#5]@2, ~@14 a4@15 ~@3]/2", // C#m D A
O: "[[f#4,a4,d5]@7 ~ [f#4,a4,d5]@2 [e4,a4,c#5]@2 [f#4,a4,d5] ~ [e4,a4,c#5]@9 f#5@9]/2", // D A D A
P: "f#5 a5 f#5 e5 c#5 c5 b4 a4 b4 c5 b4 a4 f#4 e4 f#4 b4", Q: "a4@11 ~ f#4!2 a4 f#4",
R: "f#5@9 ~ f#5@2 e5 c#5 d5 c#5", S: "a5@7 c#6", T: "~ c6 b5 a5 f#5 e5 c#5 f#4 a4@8", U: "~@4 g#4 a4 g#4 f#4 g#4@7 ~",
V: "~@4 d4@2 a4 e5 d5@8", W: "[d5 ~@5 a5@7 d5@18 ~]/2", X: "~@12 f#3@2 e3 ~", Y: "d4 e4 f#4 g#4 a4 b4 c#5 d5!2 ~@7",
Z: "d4 e4 f#4 g#4 a4 b4 c#5 d5@2 ~@7", AA: "a3 b3 c#4 d4 e4 f#4 g#4 ~@9", AB: "c#4 d4 e4 f#4 g#4 a4 b4 c#5 ~@8",
AC: "d4 e4 f#4 g#4 a4 b4 c#5 d5 ~@8", AD: "a3 b3 c#4 d4 e4 f#4 g#4 a4 ~@8",
AE: "e4 f#4 g#4 a4 b4 c#5 d5 e5 f#5 e5 d5 c#5 b4 a4 g#4 f#4",
AF: "[[f#3,a3,d4]@6 [g#3,b3,e4]@6 [a3,d4,f#4]@6 [b3,e4,g#4]@6 [d4,f#4,a4]@3 ~ [e4,g#4,b4]@3 ~, ~@18 f#4 ~@13]/2", // D E D E D E
AG: "[a4,c#5] [b4,d5] [c#5,e5] ~ [c#5,e5] f#5 [e5,a5] ~", AH: "a3 b3 c#4 d4 e4 f#4 g#4 a4 b4 c#5 d5 e5 f#5 e5 d5 c#5",
AI: "d5@6 ~ [e4,a4,c#5]", // A
AJ: "[[f#4,a4,d5]@7 ~ [f#4,a4,d5]@2 [e4,a4,c#5]@2 [f#4,a4,d5]@2 [e4,a4]@16 ~@2, ~@7 c#5@6 ~@3]/2", // D A D A5
})).s("gm_overdriven_guitar").gain(0.54).pan(0.4)
// chords · synth strings 1 · "Strings"
const synth_strings_1 = note(`<
~@6 A@2 B@4 C@4 D@4 E@4 F@6 G@6 H@2 I@8 J@2 K@2 L@2 M@2 N@8 B@4 O@2 P@4 Q@2 O@2 Q@2 O@2 Q@2 R@2 S@2 K@2 T@2 U@8 J@2
V@2 W ~@10 X@8 Q@2 A@2 Y@2 O@2 Z@8 ~
>`.pickRestart({
A: "[e4, c#4@15 ~]/2", B: "[d#4 d4, [b3,f#4]]/4", C: "[c#4,e4]/4", D: "[d#4@32 d4@31 ~, [b3,f#4]]/4",
E: "[[c#4,e4]@63 ~]/4", // C#m
F: "[[b3,d#4]@32 ~@3 b3@28 ~ [c#4,e4]@32, f#4@21 ~@11, ~@32 a3@63 ~, ~ d4 ~, ~@35 a#3 ~@60]/6", // B C#m
G: "[c#4@32 d4@32 c#4@31 ~, [a3,f#4]@95 ~]/6", H: "[[g#3,b3,e4]@31 ~]/2",
I: "[[d4,f#4]@32 [c#4,e4]@32 [d4,f#4]@32 [c#4,e4]@31 ~, a3@127 ~]/8", J: "[[e4,g#4]@15 ~ [d4,g4]@15 ~, b3@31 ~]/2",
K: "[[a3,d4,f#4]@31 ~]/2", L: "[[b3,e4,g#4]@15 ~]/2", M: "[a3,c#4,e4]/2",
N: "[d#4 d4 [c#4,e4]@2, a3@63 ~, [b3,f#4]@63 ~@65]/8", O: "[c#4,e4]/2", P: "[[d4,f#4]@31 [c#4,e4]@32 ~]/4",
Q: "[d4,f#4]/2", R: "[[c#4,e4]@29 ~@3]/2", S: "[[b3,e4,g#4] ~ [e4,g#4]@14 [d4,g4]@16, ~@2 b3@29 ~]/2",
T: "[[a3,d4,f#4]@15 ~ [b3,e4,g#4]@15 ~, e3]/2", // D E
U: "[[d4,f#4]@31 ~ [c#4,e4]@32 [d4,f#4]@32 [c#4,e4]@31 ~, a3@127 ~]/8", V: "[a3,d4,f#4]/2", W: "[b3,e4,g#4]",
X: "[[d4,f#4]@31 ~ [c#4,e4]@31 ~ [d4,f#4]@32 e4@32, a3, ~@48 c#4@15 ~]/8", Y: "[[d4,f#4]@31 ~]/2",
Z: "[[d4,f#4]@32 e4@32 [d4,f#4]@31 ~ [c#4,e4]@32, a3, ~@16 c#4@15 ~@33]/8", // D C#m
})).s("gm_synth_strings_1").gain(0.29)
// other · electric guitar muted · "Mute Guitar"
const electric_guitar_muted = note("<~@40 A B C ~ D B ~@46 A B ~@2 A B ~@40>".pickRestart({
A: "~@6 a2!3 ~@5 a2!2", B: "a2 ~@5 a2!3 ~ a2!6", C: "a2 ~@15", D: "~@7 a2!2 ~@5 a2!2",
})).s("gm_electric_guitar_muted").gain(0.8).pan(1)
// bass · fretless bass · "Bass"
const bass = note(`<
~@13 A@3 B@2 C@2 A@3 D B@2 E C A F G H I J G K L M N O P Q R S T U V W N@2 X Y A@2 B@2 C@2 Z A@3 B@2 AA AB AC D AD AE
AF AG AD AH AI AJ AK AH AL AC AM AN AO AP AQ AR AD AS AQ AT AU O AI@2 N O AI AJ AV AW AX AD AY AZ N O AI@2 N O Q BA ~
BB O P AG BC BD U Q N BD BE AI N O BF BG BH S BI BJ BH BD BK ~@2
>`.pickRestart({
A: "a1 ~ a1 ~ a1 e1 f#1 e1", B: "b1 ~ b1 ~ b1 a1 f#1 a1", C: "d2 ~ d2 ~ d2 b1 a1 b1",
D: "a1@2 ~@2 a1@2 ~@2 a1@2 e1@2 f#1@2 e1 ~", E: "d2@3 ~ d2@2 ~@2 d2@2 b1@2 a1 ~ b1@2",
F: "a1@2 a2@2 f#2@2 e2@3 ~ c#2@2 b1@2 a1@2", G: "f#1@4 ~@2 f#1 ~ f#1@5 ~ e1 f1", H: "f#1@4 ~@2 f#1 ~ f#1@4 ~@2 a1@2",
I: "d2@5 ~ d2 ~ d2@5 ~ a1 b1", J: "d2@4 ~@2 d2 ~ d2@2 c#2@2 b1@2 a1@2", K: "f#1@5 ~ c#2 ~ f#2@5 ~ c#2@2",
L: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2 b1@2", M: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2",
N: "d2 ~ d2@2 b1@2 a1@2 d2 ~ d2@2 b1@2 a1@2", O: "d2 ~ d2@2 b1@2 a1@2 d2 ~ d2@2 b1@2 a1 ~",
P: "a1 ~ a1@2 f#1@2 e1@2 a1 ~ a1 ~ f#1 ~ e1@2", Q: "a1 ~ a1@2 f#1@2 e1@2 a1 ~ a1 ~ f#1@2 e1@2",
R: "d2 ~ d2 ~ b1@2 a1 ~ d2 ~ d2 ~ b1@2 a1@2", S: "d2 ~ d2 ~ b1@2 a1@2 d2 ~ d2@2 b1@2 a1 ~",
T: "a1 ~ a1@2 f#1@2 e1 ~ a1 ~ a1@2 f#1@2 e1 ~", U: "a1 ~ a1 ~ f#1@2 e1@2 a1 ~ a1 ~ f#1@2 e1@2",
V: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", W: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
X: "e2 ~ e2@2 b1@2 c#2@2 e2 ~ e2@2 b1@2 c#2@2", Y: "e2 ~ e2@2 b1@2 c#2@2 f#2@2 e2@2 c#2@2 b1 ~",
Z: "a1 ~ a1 ~ a1 f#1 e1 f#1", AA: "d2@2 ~@2 d2@2 ~@2 d2@2 a1 ~ b1@2 a1@2",
AB: "d2@2 ~@2 d2@2 ~ d2 d2@2 b1@2 a1@2 b1@2", AC: "a1@2 ~@2 a1 ~@3 a1@2 e1@2 f#1@2 e1@2",
AD: "d2@2 ~@2 d2@2 ~ d2 d2@2 a1@2 b1@2 a1@2", AE: "d2@2 ~@2 d2@2 ~ d2 d2@2 a1@2 b1@2 a1 ~",
AF: "a1 ~ a1@2 f#1@2 e1@2 a1 ~ a1@2 f#1 ~ e1@2", AG: "a1 ~ a1 ~ f#1@2 e1@2 a1 ~ a1@2 f#1@2 e1@2",
AH: "d2@2 ~@2 d2 ~@2 d2 d2@2 a1@2 b1@2 a1 ~", AI: "a1 ~ a1@2 f#1@2 e1@2 a1 ~ a1@2 f#1@2 e1@2",
AJ: "a1 ~ a1@2 f#1@2 e1@2 a1 ~ a1@2 f#1@2 e1 ~", AK: "d2 ~@3 d2@2 ~@2 d2@2 a1@2 b1@2 a1@2",
AL: "a1@2 ~@2 a1 ~@2 a1 a1@2 e1@2 f#1@2 e1@2", AM: "d2@2 ~@2 d2@2 ~@2 d2@2 a1 ~ b1@2 a1 ~",
AN: "d2@2 ~@2 d2@2 ~ d2 d2@2 a1 ~ b1@2 a1 ~", AO: "a1@2 ~@2 a1 ~@2 a1 a1@2 e1 ~ f#1@2 e1@2",
AP: "a1@2 ~@2 a1 ~@3 a1@2 e1@2 f#1@2 e1 ~", AQ: "e1@2 ~@2 e1@2 ~ e1!2 ~ e1 ~ e1 ~ e1 ~",
AR: "g1@2 ~@2 g1@2 ~ g1 g1@2 e1@2 g1@2 e1@2", AS: "d2@2 ~@2 d2 ~@2 d2 d2@2 a1@2 b1@2 a1@2",
AT: "e1 ~ f#2@4 e2@4 c#2@2 b1@2 c#2@2", AU: "d2 ~ d2@2 b1 ~ a1@2 d2 ~ d2@2 b1@2 a1@2",
AV: "e1@2 ~@2 e1@2 ~ e1 e1@2 e1 ~ e1 ~ e1@2", AW: "g1@2 ~@2 g1 ~@2 g1 g1@2 g1@3 ~ g1@2",
AX: "d2@2 ~@2 d2@2 ~ d2 d2@2 a1 ~ b1@2 a1@2", AY: "e2@2 ~@2 e2@2 ~ e2 e2@2 b1 ~ c#2@2 b1@2", AZ: "e1 ~@3",
BA: "a1 ~@7", BB: "d2 ~ d2@2 b1@2 a1 ~ d2 ~ d2@2 b1@2 a1 ~", BC: "d2 ~ d2@2 b1@2 a1@2 d2 ~ d2 ~ b1@2 a1@2",
BD: "d2 ~ d2 ~ b1@2 a1@2 d2 ~ d2 ~ b1@2 a1 ~", BE: "a1 ~ a1@2 f#1@2 e1@2 a1 ~ a1 ~ f#1@2 e1 ~",
BF: "a1 ~ a1@2 f#1@2 e1 ~ a1 ~ a1 ~ f#1 ~ e1 ~", BG: "a1 ~ a1 ~ f#1@2 e1 ~ a1 ~ a1@2 f#1@2 e1@2",
BH: "d2 ~ d2 ~ b1@2 a1@2 d2 ~ d2 ~ b1@2 a1@2", BI: "a1 ~ a1 ~ f#1 ~ e1 ~ a1 ~ a1@2 f#1@2 e1 ~",
BJ: "a1 ~ a1@2 f#1@2 e1 ~ a1 ~ a1 ~ f#1@2 e1@2", BK: "a1@3 ~",
})).s("gm_fretless_bass").gain(0.8)
// drums · kick
const kick = s("bd").struct("<~@13 [x!4]!90 x ~@9 [x!4]!22 x ~@2>").gain(0.48)
// drums · snare
const snare = s("sd").struct("<~@13 A B@17 C B@3 C B@33 D B@5 D B@7 E B@19 ~@10 B D B@20 ~@3>".pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@2 x!3", D: "~@2 x ~@3 x!2", E: "~ x!2 ~@5",
})).gain(0.54)
// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!6 ~@98 [~ x ~ x]!7 ~@27>").gain(0.54)
// drums · hihat
const hihat = s("hh").struct("<[~ x ~ x]!6 ~@8 [x!8]!89 x ~@9 [x!8]!22 ~@3>").gain(0.42)
// drums · crash
const crash = s("cr").struct(`<
~@14 A ~@15 A ~@7 A ~@7 A ~@5 A ~@15 A ~@15 A ~@5 A ~@7 A ~@4 A ~@9 A ~@3 A ~@3 A ~@7 A ~@3 A ~ A ~@2
>`.pickRestart({
A: "x",
})).gain(0.48)
// drums · shaker
const shaker = s("sh").struct(`<
~@6 A B C D E F G H I J K B I L M B N O P Q A R A S A S A S A S T O A S A S A S A S A S A U A V A U A S A U A S A S A
S A S A S A S A S A W A S A S A S A S A S A S A S A X A S A Y A S A S A S A Z A AA ~@9 A S A S A S A@3 S A@6 S A S A S
A ~@3
>`.pickRestart({
A: "~ x!7", B: "x!4 ~@4", C: "~ x!3 ~@3 x", D: "x!3 ~@5", E: "~ x!4 ~@3", F: "x!2 ~@6", G: "~ x!2 ~@4 x",
H: "x!4 ~@2 x!2", I: "~ x!4 ~@2 x", J: "x!4 ~@3 x", K: "~ x!3 ~ x!2 ~", L: "x!2 ~ x ~@3 x", M: "~ x!2 ~ x!4",
N: "~ x!3 ~@2 x!2", O: "x!6 ~ x", P: "~ x!3 ~ x!3", Q: "x!5 ~ x!2", R: "x!2 ~@2 x ~ x!2", S: "x!8", T: "~ x!4 ~ x!2",
U: "x!7 ~", V: "x!5 ~ x ~", W: "x!4 ~ x!2 ~", X: "x!4 ~ x!3", Y: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", Z: "x!6 ~@2",
AA: "x",
})).gain(0.36)
// drums · shaker · soft notes
const shaker_soft = s("sh").struct(`<
~@7 A B C D E F G H B I A H J K A G L I M ~ N ~@8 M L ~@13 M ~@21 O ~@27 L ~@36
>`.pickRestart({
A: "~@4 x!4", B: "~@4 x!3 ~", C: "~@3 x!5", D: "~@5 x!3", E: "~@2 x!6", F: "~@3 x!4 ~", G: "~@4 x!2 ~@2",
H: "~@5 x!2 ~", I: "~ x", J: "~@2 x ~ x!3 ~", K: "~@3 x ~@4", L: "~@3 x", M: "~@5 x ~@2", N: "~@2 x!2 ~ x ~@2",
O: "~@4 x ~@2 x",
})).gain(0.24)
stack(
electric_guitar_clean, overdriven_guitar, synth_strings_1, electric_guitar_muted, bass, kick, snare, clap, hihat,
crash, shaker, shaker_soft
)
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.