0:00/0:00
// Good Old Fashioned Lover Boy — Queen
// 96 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 45, 4/4 at bar 45, 2/4 at bar 68, ...) 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 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 A B E F G H G I J K L M N O P@2 Q R S T U G H V I J W X Y Z@3 AA AB AC AD AE AF@2 AG AH AI AJ AK AL AM AN AO
AP AQ AR AS AT AU AV AW AX@2 AI AJ AK AL AY AZ BA
>`.pickRestart({
A: "[g4,bb4] eb4 [g4,bb4,eb5] eb4 [g4,bb4] eb4 [g4,bb4] eb4, [eb2,eb3]", // Gm Eb Gm Eb
B: "c4 ab3 [c4,eb4,ab4] ab3 [bb3,d4] g3 [c4,eb4] g3, [ab1,ab2]@2 [g1,g2] [c2,c3]", // Ab Bb Cm Ab G C
C: "[f3,ab3,c4]@2 ~@2 ab3@2 c4@2 eb4@2 c4@2 ~ [bb3,d4,f4] ab3@2, f2@3 [bb1,bb2], ~ f3@5 ab3 ~", // Fm Bb
D: "g4@2 eb4@2 [g4,eb5]@2 bb4@2 g4@2 eb4@2 ~ [d4,f4]@3, [eb2,eb3]@3 [bb1,bb2,ab3,bb3]", // Cm Dm Eb Bb7
E: "[f3,ab3,c4]@2 ~ ab3@2 c4 eb4@2 [b3,eb4]@2 ab3@2 [bb3,d4,f4]@2 ab3@2, f2@2 [ab1,ab2] [bb1,bb2], ~ f3@3 ~@4", // Fm B Bb Ab Bb
F: "[bb3,eb4,g4]@2 eb4 eb5@2 c5 bb4@2 ~@2 [c3,c4]@2 [bb2,bb3,d4,f4,ab4,bb4]@4, [eb2,eb3]@2 g4 ~", // Eb C Bb7 Eb
G: "[eb3,eb4,g4,bb4]@2 [eb4,g4,bb4]@2 [eb3,eb4,g4,bb4]@2 [eb4,g4,bb4]@2 [d3,d4,f4,ab4,bb4]@2 [d4,f4,ab4,bb4] ~ d4!2 [d3,d4]@2, ~@11 [f4,ab4,bb4,d5]@2 [f4,ab4,bb4]@3, ~@6 d3 ~", // Eb Bb7 D Bb7
H: "[c3,c4,eb4,g4,c5]@2 [eb4,g4,c5]@2 [c4,eb4,g4] [c4,eb4,g4]@3 [g2,g3,d4,g4,bb4]@4 [ab2,ab3,c4,eb4,ab4]@4, ~@2 c3 ~@5", // Cm Gm Ab
I: "[c3,c4,eb4,g4,c5]@2 [eb4,g4,c5]@2 [c3,c4,eb4,g4]@2 [c4,eb4,g4]@2 [b2,b3,d4,f4,g4]@2 [b3,d4,f4,g4] b3!3 [b2,b3]@2, ~@11 [d4,f4,g4]@2 [d4,f4,g4]@3, ~@6 b2 ~", // Cm G7 B G7
J: "[c3,c4,eb4,g4]@2 [c4,eb4,g4]@2 [g2,g3,bb3,d4]@2 [g3,bb3,d4]@2 [c3,c4,eb4,g4]@2 [c4,eb4,g4] g3!3 [g2,g3]@2, ~@11 [bb3,d4]@2 [bb3,d4]@3, ~@6 g2 ~", // Cm Gm Cm G Bb
K: "ab4@2 ab4!2 ab4@2 eb4@2 [ab3,b3,eb4]@2 ab3@2 [d4,f4]@2 ab3@2, [f3,c4,f4]@2 ab2 [bb2,bb3], eb4@3 ~@5", // Abm Dm F5 Bb
L: "[eb4,g4]@2 ~ eb5@2 c5 bb4@2 ~@2 [d3,d4]@2 [c3,c4]@2 [bb2,bb3]@2, eb3@5 ~@3, ~ eb4@3 [eb4,g4]@4", // Eb D C Bb Eb
M: "[ab2,ab3,b3,eb4] [ab3,b3,eb4] [ab2,ab3,b3,eb4] [ab3,b3,eb4] [ab2,ab3,b3,eb4] [ab3,b3,eb4] [ab2,ab3,b3,eb4] [ab3,b3,eb4]", // Abm
N: "[g2,g3,bb3,eb4] [g3,bb3,eb4] [g2,g3,bb3,eb4] [g3,bb3,eb4] [g2,g3,bb3,db4,e4] [g3,bb3,eb4] [g2,g3,bb3,db4,e4] [g3,bb3,eb4]", // Eb Gdim Eb Gdim Eb
O: "[ab2,ab3,b3,eb4]@2 [ab3,b3,eb4]@2 [ab2,ab3,b3,eb4]@2 [ab3,b3,eb4]@2 [gb2,gb3,bb3,db4,e4]@2 gb3!4 [gb2,gb3,bb3,db4,e4]@2, ~@11 [bb3,db4,e4]@2 ~@3, ~@6 gb2 ~", // Abm Gb7 Bbdim
P: "[b2,b3,eb4,gb4]@2 [b3,eb4,gb4]@2 [b2,b3,eb4,gb4]@2 [b3,eb4,gb4]@2 [gb2,gb3,bb3,db4,e4]@2 gb3!4 [gb2,gb3,bb3,db4,e4]@2, ~@11 [bb3,db4,e4]@2 ~@3, ~@6 gb2 ~", // B Gb7 Bbdim
Q: "[b2,b3,eb4,gb4] [b3,eb4,gb4] [b2,b3,eb4,gb4] [b3,eb4,gb4] [bb2,ab3,bb3,d4,f4] [bb2,ab3,bb3,d4,f4]@3", // B Bb7
R: "[eb3,eb4,g4,bb4] [eb4,g4,bb4] [eb3,eb4,g4,bb4,eb5] [eb4,g4,bb4] [eb3,eb4,g4,bb4,eb5] [eb4,g4,bb4] [eb3,eb4,g4,bb4,eb5] [eb4,g4,bb4]", // Eb
S: "[ab3,c4,eb4]!4 [bb3,d4] g3 [c4,eb4] g3, [ab1,ab2]@2 [g1,g2] [c2,c3]", // Ab Bb Cm Ab G C
T: "[f3,ab3,c4,eb4]@2 ~@3 c4 eb4@2 [ab3,b3,eb4]@2 ab3@2 ~@2 ab3@2, f2@3 ab3@2 ~@11, ~ f3 [f2,f3]@2 ab2@2 [bb2,bb3,d4,f4]@2", // Fm7 Abm F Bb
U: "[eb4,g4]@2 ~ eb5@2 c5 bb4@2 [eb4,g4]@2 [c3,c4]@2 [bb2,ab3,bb3,d4,f4]@4, eb3 ~, ~ eb4@3 ~@4", // Eb C Bb7
V: "[eb3,eb4,g4,bb4]@2 [eb4,g4,bb4]@2 [eb3,eb4,g4,bb4]@2 [eb4,g4,bb4]@2 [d3,d4,f4,ab4,bb4]@2 [d4,f4,ab4,bb4] d4 ~@2 [d3,d4]@2, ~@11 [f4,ab4,bb4]@2 [f4,ab4,bb4,d5]@3, ~@6 [d3,d4] ~", // Eb Bb7 D Bb7 D
W: "[f3,ab3,c4,eb4]@2 ~ ab3@2 c4 eb4@2 [ab3,b3,eb4]@2 ab3@2 [d4,f4]@2 ab3@2, f4 ~, ~ f3@3 ab2@2 [bb2,bb3]@2", // Fm7 Abm Dm Bb
X: "[bb3,eb4,g4]@2 eb5 ~@2 bb4 g4 eb4, [eb2,eb3], ~@2 eb4@2 eb4@3 ~, ~@3 c5@2 ~@3", // Eb
Y: "g4@2 eb4@2 eb5@2 ~@2 eb4@2 [eb4,bb4]@2 g4 ab4 [eb4,bb4]@2, [eb2,eb3], bb3@2 eb4@2 ~@2 eb4 ~, ~@3 c5@2 ~@3", // Eb5 Eb
Z: "[g4 eb4 eb5 ~@2 bb4 [eb4,g4] eb4 g4 eb4 eb5 ~@2 bb4 [eb4,g4] eb4 bb3@3 ~ f4@4, [eb2,eb3], bb3 eb4!2 ~ bb3 eb4!2 ~ [eb4,ab4]@4, ~@3 c5@2 ~@6 c5@2 ~@3 f4@4 ~@4, ~@19 bb3@5]/3", // Eb Ab5
AA: "~@2 [ab3,d4,f4,ab4,c5] [g3,d4,f4,ab4,bb4]@2 [f3,d4,f4,ab4,bb4]@3", // Dm7b5 Gm7 Bb7
AB: "g4 eb4 eb5 ~@2 bb4 [eb4,g4]@2, [eb2,eb3], ~ eb4!2 ~, ~@3 c5@2 ~@3", // Eb
AC: "[bb3,db4,f4,ab4]!3 [bb3,db4,f4,ab4]@2 [bb3,db4,f4,ab4]@3, [bb1,bb2]", // Bbm7 Bb
AD: "[f1,f2,c4,eb4,f4,a4]@3 [f1,f2,c4,eb4,f4,a4]@5", AE: "[d4,f4,ab4,bb4]@3 [c4,e4,g4,bb4]@5",
AF: "[f1,f2,ab3,c4,eb4] [ab3,c4,eb4] [g1,g2,ab3,c4,eb4] [ab3,c4,eb4] [c2,c3,ab3,c4,eb4] [ab3,c4,eb4] [f2,f3,ab3,c4,eb4] [ab3,c4,eb4]", // Fm7 Ab Abmaj7 Ab Fm7 Ab
AG: "[ab3,c4,eb4]@2 eb4 ab4@2 c4 eb4@2 [ab3,b3,eb4]@2 ab3 eb4@2 eb4@3, [f1,f2] [ab1,ab2]", // Ab Abm F Ab
AH: "[bb1,bb2,ab3,bb3,d4,f4] [bb1,bb2,ab3,bb3,d4,f4]@3 [eb2,eb3,eb4,g4,bb4] [eb4,g4,bb4] [eb2,eb3,eb4,g4,bb4] [eb4,g4,bb4]", // Bb7 Eb
AI: "[d2,d3,d4,f4,ab4,bb4]@2 [d4,f4,ab4,bb4] ~@3 [d2,d3]@2 [c2,c3,eb4,g4,c5]@2 [eb4,g4,c5]@2 [c4,eb4,g4] [c4,eb4,g4]@3, ~@3 [f4,ab4,bb4,d5]@2 [d4,f4,ab4,bb4]@3 ~@8, ~@2 [d2,d3] ~@3 [c2,c3] ~", // Bb7 D Cm Bb7 D C
AJ: "[g1,g2,d4,g4,bb4]@2 [ab1,ab2,c4,eb4,ab4]@2 [eb2,eb3,eb4,g4,bb4] [eb4,g4,bb4] [eb2,eb3,eb4,g4,bb4] [eb4,g4,bb4]", // Gm Ab Eb
AK: "[d2,d3,d4,f4,ab4,bb4]@2 [d4,f4,ab4,bb4] ~@3 [d2,d3]@2 [c2,c3,eb4,g4,c5]@2 [eb4,g4,c5]@2 [c2,c3,c4,eb4,g4]@2 [c4,eb4,g4]@2, ~@3 [f4,ab4,bb4,d5]@2 [d4,f4,ab4,bb4]@3 ~@8, ~@2 [d2,d3] ~@5", // Bb7 D Cm Bb7 D
AL: "[b1,b2,b3,d4,f4,g4]@2 [b3,d4,f4,g4] ~@3 [b1,b2]@2 [c2,c3,c4,eb4,g4]@2 [c4,eb4,g4]@2 [g1,g2,g3,bb3,d4]@2 [g3,bb3,d4]@2, ~@3 [b3,d4,f4,g4]@2 [b3,d4,f4,g4]@3 ~@8, ~@2 [b1,b2] ~@5", // G7 B Cm Gm G7 B
AM: "[c2,c3,c4,eb4,g4]@2 [c4,eb4,g4] ~@3 [g1,g2]@2 ab3@2 ab3@2 ab3@2 ab3@2, ~@3 [g3,bb3,d4]@2 [g3,bb3,d4]@3 [c4,f4]@4 [c4,f4]@4, ~@2 [g1,g2] ~ [f1,f2]@4", // Cm G Gm F5 G F
AN: "ab3!4 bb3!4, [ab1,ab2] [g1,g2], [c4,eb4] [c4,eb4,ab4] [d4,g4]!2", // Ab G Cm Ab G5
AO: "ab3!2 [ab3,eb4] eb4 [eb2,eb3,bb3,eb4,g4]@2 [d2,d3,bb3,d4,f4]@2, [ab1,ab2] ~, [b3,eb4] [b3,gb4] ~@2", // Ab5 Eb Bb Ab B B5
AP: "[c2,c3,c4,eb4,g4] [g1,g2,bb3,d4,g4] [ab3,c4,eb4,f4]!2, ~ [f1,f2]", // Cm Gm Fm7 F
AQ: "[ab1,ab2,ab3,c4,eb4]@2 [bb1,bb2,ab3,d4,f4]@2 [eb2,eb3,eb4,g4,bb4] [eb4,g4,bb4] [eb2,eb3,eb4,g4,eb5] [eb4,g4,bb4]", // Ab Bb7 Eb
AR: "[eb2,eb3,eb4,g4,eb5]@2 [eb4,g4,bb4]@2 [eb2,eb3,eb4,g4,eb5]@2 ~ eb1 ~@2 ab3@2 [c4,eb4,ab4]@2 ab3@2, ~@3 [eb4,g4,bb4] [ab1,ab2]@2 [ab1,ab2]@2", // Eb Ab Eb Ab
AS: "[bb3,d4] g3 [c4,eb4] g3 [ab3,c4,eb4]!4, [g1,g2] [c2,c3] [f1,f2]@2", // Bb Cm Ab G C F
AT: "[f1,f2,ab3,c4,eb4]@4 [bb1,bb2,ab3,d4,f4]@4 [eb4,g4,bb4]@2 eb4 ~@2 c5 bb4 g4, ~@8 [eb2,eb3]@3 eb5@2 ~@3, ~@3 [eb2,eb3]", // Fm7 Bb7 Eb
AU: "eb4 g4 [bb1,f4] [bb1,ab3,d4,f4] [eb2,eb3,eb4,g4,bb4] [eb4,g4,eb5] [eb2,eb3,eb4,g4,eb5] [eb4,g4,bb4], [eb2,eb3] bb0 ~@2", // Bb5 Bb7 Eb
AV: "[eb2,eb3,eb4,g4,eb5] [eb4,g4,bb4] [eb2,eb3,eb4,g4,eb5] [eb4,g4,bb4] eb4 ab4 [ab1,ab2,c4,eb4,ab4]@2, ~@2 [ab1,ab2] ~", // Eb Ab
AW: "[g1,g2,d4,g4,bb4]@4 [c2,c3,c4,eb4,g4]@4 [ab3,c4,eb4]@2 f3 ab3@2 c4 eb4@2, ~ [f1,f2]", // Gm Cm Ab F
AX: "[[b3,eb4]@2 ab3@2 [bb3,d4,f4]@2 ab3@2 [g3,bb3,eb4]@2 eb4 eb5@2 c5 bb4@2 [eb4,g4]@2 eb4@2 [bb0,bb1,ab3,d4,f4]@4 [eb2,eb3,eb4,g4,bb4]@2 [eb4,g4,bb4]@2 [eb2,eb3,eb4,g4,bb4]@2 [eb4,g4,bb4]@2, [ab1,ab2] [bb1,bb2] [eb1,eb2]@3 ~@3]/2", // B Bb Eb Bb7 Eb Ab Bb Eb
AY: "[c2,c3,c4,eb4,g4]@2 [c4,eb4,g4] ~@3 [g1,g2]@2 [f3,ab3,c4,eb4]@2 f3 ~@2 c4 eb4@2, ~@3 [g3,bb3,d4]@2 [g3,bb3,d4]@3 ~@3 ab3@2 ~@3, ~@2 [g1,g2] ~ [f1,f2]@4, ~@3 f3", // Cm G Fm7 Gm G F
AZ: "~ f3 [b3,eb4,ab4] f3 [bb1,bb2,ab3,bb3,d4,f4] [bb1,bb2,ab3,bb3,d4,f4]@3, [ab1,ab2] ~", // Abm Bb7 Ab
BA: "[bb3,eb4,g4]@2 eb4 eb5@2 c5 bb4 g4 [eb2,eb3]@2 [bb1,bb2]@2 [eb2,eb3,eb4,g4]@2 ~@2, [eb2,eb3]@2 eb4 ~", // Eb Bb Eb
})).s("gm_piano").gain(0.36).pan(0.7)
// other · overdriven guitar · "Guitar"
const overdriven_guitar = note("<~@36 A B C D E F G ~@7 H I ~@17>".pickRestart({
A: "bb4@10 bb4 [ab4,bb4]!5", B: "bb4, ab4 ~@15", C: "bb3@2 db4@2 f4@2 ab4@4 c5@2 bb4 [bb4,c5] ab4@2", D: "c5",
E: "bb4@15 c5", F: "[ab4,bb4]@2 ~@12 g4 [g4,ab4]", G: "f4 ~@7", H: "~@4 bb4 c5 d5 ~", I: "ab5 bb5 ab5@4 ~@2",
})).s("gm_overdriven_guitar").gain(0.36).pan(0.7)
// other · electric guitar clean · "Guitar"
const electric_guitar_clean = note("<~@6 A B ~@32 C ~@8 D E ~@18>".pickRestart({
A: "ab4@5 bb4 d4!2", B: "eb4", C: "bb3@3 bb3@3 c4@2", D: "~@4 f4 g4 ab4 c5", E: "f5 g5 f5@6",
})).s("gm_electric_guitar_clean").gain(0.5).pan(0.1)
// chords · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note("<~@6 A B ~@32 C ~@3 D E F ~@2 G H I ~@17>".pickRestart({
A: "c4@2 b3 c4", B: "bb3", C: "[f3,ab3]@3 [e3,g3]@5", D: "~@4 [eb4,g4] ~ [g3,db4]@2",
E: "[ab3,d4]@2 [bb3,d4] [a3,db4] [bb3,d4] [a3,db4] [bb3,d4]@2 g3 gb3 g3@2 ~@4", // Abdim Bb A Bb A Bb
F: "bb3 a3 bb3@2 [ab3,c4]@3 d4 g4@8, ~@7 bb3@9", G: "~ [f4,ab4]", H: "[eb4,c5] [f4,ab4] g4@2", I: "ab4 b4 bb4 ~",
})).s("gm_electric_guitar_jazz").gain(0.42).pan(0.4)
// other · distortion guitar · "Guitar"
const distortion_guitar = note("<~@40 A ~@3 B C D E@2 F G H I J ~@15>".pickRestart({
A: "d3@3 e3@5", B: "~@4 bb4 ~ e4@2", C: "f4@2 f4 e4 f4 e4 f4@2 g4 gb4 g4@2 ~@4", D: "bb4 a4 bb4@2 c5@3 d5 bb4@8",
E: "[~@12 g4@6 g4@2 gb4@2 f4@2 eb4@2 ~@2 g4 gb4 g4@2]/2", F: "~@4 g4 gb4 g4@2 c4@8", G: "eb4 c4 d4@2",
H: "eb4 gb4 g4 ~", I: "~@8 ab4@3 c5 c5@3 eb5", J: "eb5@3 g5 g5@3 bb5 bb5@2 ~@6",
})).s("gm_distortion_guitar").gain(0.3).pan(0.9)
// bass · electric bass finger · "Bass"
const bass = note(`<
~@7 A B C B D E F G H I J K@2 L M N O P B C B Q R S T U V@2 W X Y Z AA AB AC@2 AD AE AF AG AF AH AI AJ AK AL AM AN AO
AP AQ AN AR AS AT AF AG AF AU AV AW AX
>`.pickRestart({
A: "~@3 bb1", B: "eb2 ~ eb2 ~ d2 ~ d2 ~", C: "c2 ~ c2 ~ g1@2 ab1@2", D: "c2 ~ c2 ~ b1 ~ b1 ~",
E: "c3 ~ g2 ~ c3 ~ g2 ~", F: "f2@2 ab2 bb2", G: "eb3@5 d3 c3 bb2", H: "ab2 ~ ab2 ~ ab2 ~ ab2 ~",
I: "g2@2 ~@2 g2@2 ~@2 bb2@2 ~ db3@3 eb3@2", J: "ab2 ~ ab2 ~ gb2 ~ gb2@2", K: "b1 ~ b1 ~ gb2 ~ gb2@2",
L: "b1 ~ b1 ~ bb1 bb1@2 bb2", M: "eb3 ~ eb3 ~ eb3 ~ eb3 ~", N: "ab2 g2 f2 eb2 g2@2 c2@2", O: "f2!2 ab2 bb2",
P: "eb2@2 ~ bb1", Q: "c2@2 ~@2 c2@2 ~@2 b2 bb2 b2@2 b2 bb2 b2@2", R: "c2 ~ g1 ~ c2 ~ g1 ~", S: "f1@2 ab1 bb1",
T: "eb2@6 ~ bb2", U: "eb3@10 ~@2 g3 gb3 g3@2", V: "eb3/2", W: "f3", X: "f2@2 ab2@2 ab3@2 g3@6 c4 b3 c4@2", Y: "eb2",
Z: "bb1", AA: "f1", AB: "~@9 ab2 g2@2 f2@2 c2@2", AC: "f1@2 ~@2 ab1@2 ~@2 c2@2 ~@3 ab2 g2@2", AD: "f1@3 ~ ab1@3 ~",
AE: "bb1 bb1@3 eb2 ~ eb2 ~", AF: "d2 ~ d2 ~ c2 ~ c2 ~", AG: "g1@2 ab1@2 eb2 ~ eb2 ~", AH: "b1 ~ b1 ~ c2 ~ g1 ~",
AI: "c2 b1 c2@2 g1@2 ~@2 f1@6 ~@2", AJ: "ab1@3 ~ g1@3 ~", AK: "ab1@2 eb2 d2", AL: "c2 g1 f1@2",
AM: "ab1@2 bb1@2 eb3 ~ eb3 ~", AN: "eb3@2 ~@2 eb3@2 ~ eb2 ab2@2 g2@2 f2@2 eb2@2", AO: "g2 ~ c2@2 f2!3 ~",
AP: "ab2 ~ bb2@2 eb2@4", AQ: "~@2 c2@2 bb2 c3 bb2@2 eb3@2 ~@2 eb3@2 ~@2", AR: "g2@2 c3@2 f2 ~ f2 ~",
AS: "ab2 bb2 eb2@2", AT: "~@2 bb1@2 eb2 ~ eb2 ~", AU: "b1 ~ b1 ~ c3 ~ g2 ~", AV: "c3 b2 c3@2 g2@2 ~@2 f2@6 ~@2",
AW: "ab4@3 ~ [bb3,bb4] bb4@3, ~@5 bb3@2 ~", AX: "eb3@4 eb3 bb2 eb3 ~",
})).s("gm_electric_bass_finger").gain(0.42)
// other · guitar harmonics
const guitar_harmonics = note("<~@44 A B C D E F G H I J ~@15>".pickRestart({
A: "~@4 g4 ~ db4@2", B: "d4@2 d4 db4 d4 db4 d4@2 eb4 d4 eb4@2 ~@4", C: "g4 gb4 g4@2 f4@3 g4 g4@8", D: "~@3 eb4",
E: "d4@2 g4@2 gb4@2 f4@2 eb4@2 ~@2 d4 db4 d4@2", F: "c4@4 d4 db4 d4@2 f3@8", G: "ab3 f3 bb3@2", H: "b3@2 eb4 ~",
I: "~@8 f4@3 ab4 ab4@3 c5", J: "c5@3 eb5 eb5@3 g5 g5@2 ~@6",
})).s("gm_guitar_harmonics").gain(0.22).pan(0.6)
// other · overdriven guitar · "Guitar"
const overdriven_guitar_2 = note("<~@44 A B C D E F G H I J ~@15>".pickRestart({
A: "~@4 eb4 ~ g3@2", B: "ab3@2 bb3 a3 bb3 a3 bb3 g3 c4 b3 c4@2 ~@4", C: "d4 db4 d4@2 f4@3 g4 eb4@8", D: "c4 ~@5 c4@2",
E: "b3@2 d4@2 b3@2 ab3@2 g3@2 ~@2 bb3 a3 bb3@2", F: "~@4 bb3 a3 bb3@2 c3@8", G: "ab2 bb2", H: "b2 ab2 bb2 ~",
I: "~@8 c4@3 f4 f4@3 ab4", J: "ab4@3 c5 c5@3 eb5 eb5@2 ~@6",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.1)
// drums · kick
const kick = s("bd").struct(`<
~@7 A B@3 C B@2 D B@9 E B@6 D ~@4 F D@2 ~@2 B@3 G B@3 H B I B@6 J B@3 K B@3 H B L M
>`.pickRestart({
A: "~@3 x", B: "x!2", C: "x ~@3 x ~@2 x", D: "x", E: "x ~@2 x", F: "~@7 x", G: "x!2 ~@2 x ~@3", H: "x ~@2 x!2 ~@3",
I: "~ x", J: "~@3 x!2 ~@3", K: "~ x!2 ~", L: "~@4 x!2 ~@2", M: "x!2 ~ x!4 ~",
})).gain(0.3)
// drums · snare
const snare = s("sd").struct("<~@8 A@6 B A@8 C D A@6 ~@10 A@2 ~ E A@4 F ~ E A@3 G A E A@2 F H A@4 F ~ I>".pickRestart({
A: "~ x ~ x", B: "~@13 x!2 ~", C: "~@4 x ~@7 x ~@2 x", D: "~@9 x!2 ~@5", E: "~@3 x", F: "~ x ~@2", G: "x!2 ~ x",
H: "~ x!2 ~@9 x ~@3", I: "~@4 x ~@2 x ~@8",
})).gain(0.24)
// drums · hihat
const hihat = s("hh").struct(`<
~@8 A@2 B C D E ~ F G F@3 H F H F I D@2 A@3 J ~@10 D@2 ~ K L D L M N ~ O P L@3 Q R S T U R D@2 V W U ~ X
>`.pickRestart({
A: "x!5 ~ x!2", B: "~ x!4 ~ x!2", C: "x ~ x!3 ~ x ~", D: "x!8", E: "~@2 x!2 ~@4", F: "x!2 ~ x!2 ~@2 x",
G: "x!2 ~ x!3 ~ x", H: "x!2 ~@6", I: "~@3 x ~@4 x ~@7", J: "~ x!3 ~ x ~ x", K: "~@4 x!4", L: "x ~ x!3 ~ x!2",
M: "x ~ x ~ x!4", N: "x!4 ~@4", O: "~@7 x", P: "~ x!7", Q: "x ~ x!2 ~@2 x!2", R: "x ~@3 x!4", S: "x ~ x!3 ~@2 x",
T: "x ~@2 x!2 ~@2 x", U: "x ~@2 x ~@4", V: "x ~ x!6", W: "x ~ x ~@2 x!3", X: "x!2 ~ x!2 ~@3",
})).gain(0.3)
// drums · mid tom
const mid_tom = s("mt").struct("<~@40 [~@7 x] ~@28>").gain(0.36)
// drums · open hat
const open_hat = s("oh").struct(`<
~@8 A@3 B ~@3 A ~ A@3 C A D A ~@3 A@3 ~@15 E ~ E F ~@4 E@4 ~ E@2 G ~@3 G@3 ~ A
>`.pickRestart({
A: "~@5 x ~@2", B: "~ x ~@3 x ~ x", C: "~@2 x!2 ~@4", D: "~@3 x ~@4", E: "~ x ~@3 x ~@2", F: "~ x ~ x ~@4",
G: "~ x ~@6",
})).gain(0.3)
// drums · high tom
const high_tom = s("ht").struct("<~@40 [~@13 x ~@2] ~@28>").gain(0.36)
// drums · crash
const crash = s("cr").struct(`<
~@7 A ~@2 B ~@2 C B ~@5 D ~ E ~ F ~@5 C B ~@4 G B@2 ~@4 H I ~@4 J@2 H B ~@3 J K ~@2 J L ~@4 J M A
>`.pickRestart({
A: "~@3 x", B: "x", C: "x ~ x!2", D: "~@5 x ~@2", E: "~@2 x!2", F: "x ~@2 x", G: "~@7 x", H: "x!2", I: "x!2 ~@6",
J: "~ x", K: "~@3 x ~@4", L: "~ x ~@2", M: "~@4 x!2 ~@2",
})).gain(0.3)
// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@54 [~@5 x ~ x] [~ x ~ x ~@4] ~@13>").gain(0.7)
// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct("<~@54 [~@2 x!2] [x!2 ~@2] ~@13>").gain(0.7)
// drums · triangle
const triangle = s("triangles:35").struct("<~@4 [x ~@2 x!2 ~@3] ~@50 [~ x] ~@13>").gain(3.66)
stack(
piano, overdriven_guitar, electric_guitar_clean, electric_guitar_jazz, distortion_guitar, bass, guitar_harmonics,
overdriven_guitar_2, kick, snare, hihat, mid_tom, open_hat, high_tom, crash, woodblocks, woodblocks_2, triangle
)
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.