0:00/0:00
// The Great Pretender — Queen
// 75 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 63 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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.
// other · rock organ
const rock_organ = note("<~@32 A@2 B C@2 ~@26>".pickRestart({
A: "[~@16 b5@13 a5@2 ~@2 g5@2 e5@2 g5@7 e5 g5@2 e5 a5@3 g5@13, ~@31 g5@2 ~@15 g5 ~@15, ~@16 e5 ~@15]/2",
B: "~@11 e5@2 g5@2 ~ [g5,ab5] ~@2 g5@8 e5@2 ~ g5 ~, ~@16 a5@3 ~@13", // Abmaj7
C: "[a5 b5@4 a5@5 g5@3 a5@3 b5@18 gb5@3 g5@3 ~@24]/2",
})).s("gm_rock_organ").gain(0.5)
// other · synth brass 1
const synth_brass_1 = note("<~@37 A B@2 C D@2 E F G ~@17>".pickRestart({
A: "~@16 ab4@2 ~@9 ab4@2 ab4@2 ~", B: "[ab4@7 ~@6 ab4@2 ~ f4@4 ~ ab4@20 ~ ab4@2 ~ ab4@3 ~@3 bb4@3 ab4@10]/2",
C: "~@3 ab4@2 ab4@2 ab4@3 f4@3 db4@3 eb4@16",
D: "[~@10 eb4@2 ~ eb4@2 ab4@11 ~ ab4@3 ~ bb4@11 ~ bb4@4 ~@2 c5@10 bb4@2 ab4@3]/2", E: "f4@11 ~ eb4 f4@2 eb4@14 c4@3",
F: "bb3@10 ab3@3 bb3@3 c4@16", G: "db4@5 ~@7 e4 ~@3 eb4@16, ~@11 f4@4 ~@17",
})).s("gm_synth_brass_1").gain(0.5)
// other · viola · Db5 E Absus2
const viola = note(`<
~@59
[~ db4@6 e4@11 ~ [ab4,db5] ~ [e5,ab5] db6 ~ ab6@6 bb6 ab6, ~@23 e6@3 ~@6]
[bb6 ab6 bb6 [ab6,bb6] ab6 bb6 ab6 bb6 ab6 bb6 ab6 bb6 ab6 bb6 ab6 bb6 ab6 bb6 ab6 bb6 [ab6,bb6] ~ [ab6,bb6] ab6 bb6 ~ [ab6,bb6] ab6 bb6 ~ ab6@2]
~@2
>`).s("gm_viola").gain(0.4)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
A B C@2 D@2 E@4 C@2 D@2 E@4 F G H I J K@5 L@2 M N@2 O P Q R@2 S@2 T U@4 V@6 W@4 X@8
>`.pickRestart({
A: "a4 ~ [gb3,a3,gb4,a4] a4 ~ [gb3,a3,gb4,a4] ~@2 [gb3,a3,gb4,a4] ~@6 b4 [ab3,b3,ab4,b4] ~ [ab3,ab4,b4] b4 ~ [ab3,b3,ab4,b4] ~ b4 [ab3,b3,b4]@2 ~@6, ~ d3@15, ~@2 d2@7 ~@14 ab4@2 ~@7", // Gbm Abm
B: "[d2,d3,d4,d5]@2 ~ c5 ~ c5 ~@2 [d3,eb3,d4,eb4,db5] e3 [f3,gb3,f4,gb4] [g3,g4,db5] [ab3,a3,ab4,a4] [bb3,bb4,db5] [b3,c4,b4,c5] [db4,db5] [d2,d3,d6]@3 ~@13, c5 ~ e5@13 ~@17, ~@2 e4@7 e4@6 ~ [d4,d5,d7] ~@15", // D Gbmaj7 Gdim Amaj7 Bbm Cmaj7 Db D
C: "[g3@15 a3@16 g3@25 f3@8]/2", D: "[e3@31 g3@16 f3@17]/2", E: "[e3@16 gb3@15 g3@17 c3@7 db3@8 d3@32 g3@32 ~]/4",
F: "~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@9 [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@7", // C
G: "~@2 [d5,g5,b5] ~@2 [d5,g5,b5] ~@2 [d5,g5,b5] ~@9 [d5,g5,b5] ~@2 [d5,g5,b5] ~@2 [d5,g5,b5] ~@7", // G
H: "~@3 [g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@9 [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@7", // C
I: "~@2 [a2,d4,gb4,a4] [b2,f4,ab4,b4]", J: "[c3,gb4,a4,c5]@3 ~@13",
K: "[~@8 d3@4 ~@4 g3@24 f3@8 e3@8 c4@16 e4@7 g3@25 f3@8 c4@15 d4@17 g3@16]/5",
L: "[c4@6 ~@2 db4@8 d4@26 a3@3 gb3@3 eb3@16]/2", M: "e3 g3 b3@2",
N: "[a3@16 ~@16 g4@16 ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@7, ~@16 g3@31 ~@17]/2", // C
O: "~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@9 [d5,g5,b5] ~@2 [d5,g5,b5] ~@2 [d5,g5,b5] ~@7", // C G
P: "~@2 [d5,g5,b5] ~@2 [d5,g5,b5] ~@2 [d5,g5,b5] ~@10 [g4,c5,e5] ~@2 [g4,c5,e5] ~ [g4,c5,e5] ~@7", // G C
Q: "~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@23", // C
R: "[~@15 eb3 bb1 bb2 [g2,g3] eb3 [bb2,bb3] ~ [g2,g3] [eb3,eb4] [bb2,bb3] ~ [g3,g4] [eb3,eb4] [bb3,bb4] ~ [g3,g4] [eb4,eb5] [bb3,bb4] [g4,g5] ~ [eb4,eb5] [bb4,bb5] g5 [g4,eb5,eb6] ~ [bb4,bb5] [g5,g6] [eb5,eb6] ~ [bb5,bb6] ~@3 ab3@15 ~, ~@16 eb2@3 eb2@28 ~@17]/2", // G Bb G Eb Bb G Eb Bb …
S: "[bb3@8 eb3@4 ~@4 ab3@24 gb3@8 ~@2 f5 ~@2 db5 ~@2 ab4@8, ~@50 ab4@6 f5 ~@7, ~@53 f4@11]/2",
T: "~@2 f5 ~@2 db5 ~@2 ab4@10 eb5 ~@2 [eb4,c5] ~@2 ab4@8, ~@2 ab4@6 f5 ~@9 ab4@6 eb5 ~@7, ~@5 f4@27", // Cm
U: "[~@2 eb5 ~@2 [eb4,c5] ~@2 eb5 ~@23 [g4,g5]@15 ~ ab5@31 [eb4,eb5]@17 [bb3,bb4]@10 ab3@2 [bb3,bb4]@3 ~ [c4,c5]@15 [f3,ab3,db4], ~ ab4@3 ab4@20 ab4@29 ab4@11, ~@16 f5@17 ~@95, ~@3 f4@13]/4", // Cm G Eb Bb C Db
V: "[[f4,ab4,db5]@7 ~ [ab4,d5]@8 c5@63 ~@27 c4@21 ~@3 g4@33 ~@3 g4@13 ~@3 bb3@7 ~@3, ~@7 [f3,ab3,d4]@6 ~@3 [eb2,eb3,ab4]@176, ~ f4@23, ~@16 eb5@72 eb4@101 ~@3, ~@79 c5@45 ~@6 [bb3,gb4]@48 ~@2 g4@8 ~@4]/6", // Db Abdim Ddim Ab5 Ebm
W: "[~ eb4@55 [eb3,ab3,ab4,c5,eb5] ~@2 c5 eb5 ~ [c5,ab5] eb5 ~@3 c5 eb5 c5!3 ~ eb5 c5 [eb5,f5]!2 f5 ~ ab5 ~ ab4@2 ~@2 f5 ~ [gb5,ab5]!2 gb5 ~@4 ab5 ~ [ab4,f5] gb5 ~ f5 ~ f5 ~ db5 ~@4 db5 ab4 [ab4,eb5]!2 ab4 [ab4,c5,db5] [gb4,ab4] ab4 [gb4,c5] ~ db5 gb4 ~ [gb4,bb4] bb4 ab4 ~@2 bb4 [f4,gb4], [ab2,ab3,c4,ab4,c5]@7 ab2@9, ab1@52 ~@4 ab1@51 ab4@2 ~@2 db5@2 ~@3 ab4@2 [ab4,c5]@3 ab4@2 ~ [gb4,ab4]@2 ab4@2, ~@57 ab4@5 ab4@3 ab4@3 ab4@2 ab4@2 [ab4,c5]@2 ab4@7 gb5 ~ f5 ab4@2 ab4@2 f5@2 gb5@2 c5@8 ab4@2 [ab4,f5]@3 f5@4 ~ f5@2 eb5@2 ~@3 eb5@2 ~ db5@2 ~ db5@5, ~@57 c5 eb5@2 ~@4 [c5,eb5]@2 [eb5,f5]@2 ~@3 eb5@2 ~@3 db5@11 ~ c5@3 f5 ab4@4 ~ ab4 gb5@5 ~ [ab4,db5]@4 ~@6 f4@8 [f4,gb4]@3 f4@2 ~]/4", // Ab Fm Ebsus2 Gbsus2 Db Ab5 Dbmaj7 Gbsus2 …
X: "[~ bb4 eb4@2 ~ db4 f4@2 db4 ~@3 [db4,eb4] bb3!2 ~ ab3@23 ~ [b3,e4]@30 ~@33 [b3,e4]@94 ~@34 ab2@5 ~@20, f4@6 ~@3 f4@3 f4@89 ~@155, ~ ab4@5 ab4@228 ~@22, ~ gb4@2 ~@3 gb4 ~@3 c4@27 ~@2 ab3@37 ab2@155 ~@25, ~@2 db4 ~@2 eb4@6 ~@3 eb4@23 ~@34 db4@30 ~@98 [c4,eb4]@35 ~@22]/8", // Dbsus2 E5 Cm
})).s("gm_string_ensemble_1").gain(0.5)
// chords · string ensemble 2
const string_ensemble_2 = note("<~@22 A@8 ~@33>".pickRestart({
A: "[~ [f4,ab4]@31]/8", // Fm
})).s("gm_string_ensemble_2").gain(0.5)
// chords · synth strings 1
const synth_strings_1 = note(`<
A B C@4 D@4 E@4 F@2 G@2 ~@3 H I J@5 K@2 L@3 ~@3 M N O@5 P@2 Q@6 R@2 S T U V@2 ~@5
>`.pickRestart({
A: "~@2 a5 ~@2 a5 ~@2 a5 ~@7 b5 ~ b5 ~@2 b5 ~@2 b5 ~@7", B: "c6 ~ c6 ~@2 c6@2 ~ db6 ~ db6 ~@2 db6 ~@2 d6 ~@15",
C: "[[b3,d4]@16 [c4,e4]@6 [a3,gb4]@10 b3@32 c4@16 c5@8 c4@6 ~@16 e5 ~@17, g4@26 ~@6 g4@17 ~@15 g4@54 ~@10, ~@11 d4@23 ~@13 [b3,d4]@17, ~@32 e4@17 ~@15]/4", // Bm C D Bm
D: "[[c4,e4,g4]@16 [gb4,a4]@16 b4@16 c5@8 db5@8 ~@17 a4 ~@14 g4@13 [e5,g5,c6]@2 ~ [d5,g5,b5]@6 ~@2 [d5,gb5,a5]@6 ~@2, ~@16 d4@35 ~@13 d5@35 ~@29, ~@32 g4@53 ~@43, ~@12 e4@4 b4@5 ~@11, ~@40 gb4@9 ~@15]/4", // C Gbm C G D
E: "[[b3,d4]@8 [c4,e4]@3 [a3,gb4]@5 b3@16 c4@8 c5@4 c4@3 [b3,d4]@17, g4@26 ~@6 g4@17 ~@15 g4@54 ~@10, ~@11 d4@23 ~@30, ~@32 e4@17 ~@15]/4", // Bm C D Bm
F: "[[c4,e4,g4]@2 [gb4,a4]@2 b4@2 c5 db5, ~@16 d4@35 ~@13, ~ g4, ~@3 e4]/2", // C Gbm
G: "[[g4,b4,d5]@15 [gb4,a4]@16 g5@5 g5@11 ~ f5@16, ~@15 d5@32 ~@17, ~@31 b4@16 [b4,d5]@16 ~]/2", // G Gbm Bm
H: "[g3,d4,g4]@8 [gb4,a4]@3 [ab4,b4]@4 ~", I: "[a4,c5]@7 ~ [b4,db5]@7 ~ [d4,g4,b4]@16",
J: "[[e4,c5]@8 gb4@7 ~ g4@16 f4@15 ~ e4@16 e5@7 ~ e4@7 ~@25 f4@6 ~@2 [e4,g4,c5]@14 [gb4,a4]@16 ~@2 [g4,b4]@16, a4@16 b4@32 c5@31 ~ [d4,b4]@33 ~@47, ~@8 d4@39 ~ g4@56 ~@22 d5@30 ~@4]/5", // C Gbm G
K: "[[g4,c5]@2 ~@6 [db5,e5]@8 b4@16 [gb4,a4]@14 ~@2 [eb4,gb4,b4]@15 ~, e4 ~@7 g4@23 ~@33, ~@8 d5@15 ~@9]/2", // C5 Dbm Gbm B
L: "[[e4,g4,c5]@6 ~@2 e4@7 ~ [g4,b4]@16 [gb4,a4]@16 b4@16 b3@15 ~@17, ~@6 db5@7 ~@3 d5@32 ~@48, ~@7 g4@6 ~@35 [d4,g4]@31 ~@17]/3", // C G Gbm G5
M: "~@17 bb1 g2 eb2 bb2 ~ g2 eb3 bb2 ~ g3 eb3 bb3 ~ g3 eb4",
N: "bb3 g4 ~ eb4 bb4 g4 eb5 ~ bb4 g5 eb5 ~ bb5 ~@3 [eb4,ab4]@16", // Ab5
O: "[[f4,db5]@8 g4@7 ~ ab4@16 gb4@15 ~ f4@16 f5@7 ~ f4@7 ~@25 gb4@6 ~@2 [f4,ab4,db5]@14 [g4,bb4]@16 ~@2 [ab4,c5]@16, bb4@16 c5@32 db5@31 ~ [eb4,c5]@33 ~@47, ~@8 eb4@39 ~ ab4@56 ~@22 eb5@30 ~@4]/5", // Db Gm Ab Cm
P: "[[ab4,db5]@2 ~@6 [d5,f5]@8 c5@16 [g4,bb4]@14 ~@2 [e4,g4,c5]@15 ~, f4 ~@7 ab4@23 ~@33, ~@8 eb5@15 ~@9]/2", // Db5 Dm Gm C
Q: "[[f4,ab4,db5]@6 ~@2 f4@7 ~ c5@62 ~@28 c4@21 ~@3 gb4 g4@33 ~@18 bb3@6 ~@4, ~@6 d5@7 ~@3 ab4@116 ~@48 g4@8 ~@4, ~@7 ab4@6 ~@3 [eb2,eb3]@175 ~, ~@16 eb5@72 eb4@101 ~@3, ~@79 c5@44 ~@7 bb3@48 ~@14]/6", // Db Eb
R: "[~ eb5@55 ~ [ab4,c5] eb5 c5 eb5 ~ [ab4,c5,ab5] ~, [ab2,ab3,ab4,c5]@7 ~]/2", // Ab
S: "[c5,eb5] ab4 [eb5,f5] c5 [ab4,eb5] ~ [ab4,c5] eb5 [ab4,c5] eb5 [ab4,c5] ~ [eb5,f5] f5 ~ ab5 ~ [ab4,gb5] ~ f5 ab4 f5 ab4 ~ [c5,f5,gb5,ab5] ~ gb5 f5 c5@2 ab5 ~, ~@12 db5@3 ~@13 ab4 ~@3", // Cm Ebsus2 Ab5 Ab Ebsus2 Ab7 Fm
T: "f5 ab4 gb5 ~ [ab4,f5] ~ [ab4,f5] ~ [ab4,db5] f5 ~ ab4 db5 ~ [ab4,f5] [db5,eb5] [ab4,eb5] [c5,db5] [f4,gb4,ab4] ~ [gb4,ab4,c5] eb5 [ab4,c5,db5] gb4 db5 ab4 [f4,gb4,bb4] db5 [gb4,ab4] f4 [ab4,bb4] gb4", // Db Db5 Db Dbsus2 Ab5 Dbmaj7 Fm Ab7 …
U: "f4 [gb4,ab4,bb4] [db4,eb4] ~@2 [db4,eb4] [f4,gb4] ~ db4 f4 ~@2 [db4,eb4,f4] ~ bb3 ~ ab3@6 ~@10, ~@3 ab4@4 eb4@3 ~@6, ~@10 c4@7 ~@15", // Gb Dbsus2 Gbmaj7 Db
V: "[~@7 ab3@49 ~@8]/2",
})).s("gm_synth_strings_1").gain(0.2)
// chords · trombone · D Fdim Gbdim Db D
const trombone = note(`<
[[d4,gb4,a4] ~ [d4,gb4,a4] ~@2 [d4,gb4,a4] ~@2 [d4,gb4,a4] ~@7 [f4,ab4,b4] ~ [f4,ab4,b4] ~@2 [f4,ab4,b4] ~@2 [f4,ab4,b4] ~@7]
[[gb4,a4,c5] ~ [gb4,a4,c5] ~@2 [gb4,a4,c5] ~@2 [f4,ab4,db5] ~ [f4,ab4,db5] ~@2 [f4,ab4,db5] ~@2 [gb4,a4,d5] ~@15]
~@61
>`).s("gm_trombone").gain(0.45)
// chords · pizzicato strings
const pizzicato_strings = note("<~@18 A B A ~@11 C D E F ~@3 G H I ~@21>".pickRestart({
A: "~@2 [g3,e4] ~@2 [g3,e4] ~@2 [g3,e4] ~@9 [g3,e4] ~@2 [g3,e4] ~@2 [g3,e4] ~@7", // C
B: "~@2 [d4,b4] ~@2 [d4,b4] ~@2 [d4,b4] ~@9 [d4,b4] ~@2 [d4,b4] ~@2 [d4,b4] ~@7", // G
C: "~@18 [g3,e4] ~@2 [g3,e4] ~@2 [g3,e4] ~@7", // C
D: "~@2 [g3,e4] ~@2 [g3,e4] ~@2 [g3,e4] ~@9 [d4,b4] ~@2 [d4,b4] ~@2 [d4,b4] ~@7", // C G
E: "~@2 [d4,b4] ~@2 [d4,b4] ~@2 [d4,b4] ~@9 [g3,e4] ~@2 [g3,e4] ~@2 [g3,e4] ~@7", // G C
F: "~@2 [g3,e4] ~@2 [g3,e4] ~@2 [g3,e4] ~@23", G: "~@18 [ab3,f4] ~@2 [f3,db4] ~@2 [ab3,f4] ~@7",
H: "~@2 [ab3,f4] ~@2 [f3,db4] ~@2 [ab3,f4] ~@9 [ab3,eb4] ~@2 [eb3,c4] ~@2 [ab3,eb4] ~@7", // Db Ab5 Cm Ab5
I: "~@2 [ab3,eb4] ~@2 [eb3,c4] ~@2 [ab3,eb4] ~@23", // Ab5 Cm Ab5
})).s("gm_pizzicato_strings").gain(0.5)
// other · timpani · Dsus2
const timpani = note(`<
~@49
[~@17 d1 e1 d1 [d1,e1] e1 d1 e1 d1 e1 d1 e1 [d1,e1] d1 e1 d1]
[e1 d1 e1 d1 [d1,e1] e1 d1 e1 d1 e1 d1 [d1,e1] e1 d1 e1 d1 e1 d1 e1 d1 [d1,e1] e1 d1 e1 d1 e1 d1 [d1,e1] e1 d1 e1 d1]
[e1 [d1,e1] ~@30]
~@11
>`).s("gm_timpani").gain(0.5)
// other · timpani · soft notes · Dsus2
const timpani_soft = note("<~@49 [~@11 e1 ~ e1 [d1,e1] d1 e1 ~@15] ~@13>").s("gm_timpani").gain(0.3)
// bass · electric bass finger
const bass = note(`<
A B C D E F G H I J C D E F G H I K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL ~@18
>`.pickRestart({
A: "d1 ~ d1@2 ~ d1@2 ~ d2@4 ~ d2@2 ~ d1@2 d1@2 ~ d1@2 ~ d2@4 ~ d2@2 ~, ~@16 e1 ~@15",
B: "d1@2 d1@2 ~ d1@2 ~ d2@4 ~ d2@3 d1@2 ~@14", C: "g1@10 ~@3 g1@2 ~ a1@7 ~ d2@8", D: "g1@12 ~ g1@2 ~ g1@13 g1@3",
E: "c2@12 ~ c2@2 ~ c2@12 ~ c2@3", F: "g1@12 ~ g1@2 ~ g1@12 ~ g1@3", G: "c2@11 c2@3 ~@2 d2@12 ~ d2@2 ~",
H: "g1@12 ~ g1@3 c2@7 ~ db2@7 ~", I: "d2@13 d2@2 ~ d2@16", J: "g1@12 ~ g1@3 d2@12 ~ d2@3",
K: "g1@12 ~@4 d2@12 ~ d2@3", L: "c2@11 ~@2 c2@2 ~ c2@12 ~ c2@3", M: "g1@11 ~@2 g1@2 ~ g1@12 ~ g1@3",
N: "c2@12 ~ c2@2 ~ a1@11 ~@2 a1@3", O: "g1@11 ~@2 g1@3 d2@13 d2@2 ~", P: "d2@13 d2@2 ~ g1@10 ~@3 g1@3",
Q: "a1@8 d2@7 ~ g1@12 ~ g1@2 ~", R: "g1@8 b1@8 c2@12 ~ c2@2 ~", S: "c2@13 d2@3 g1@12 ~ g1@2 ~",
T: "g1@8 b1@8 c2@11 ~@2 c2@3", U: "d2@12 ~ d2@3 g1@12 ~ g1@3, ~@16 a1 ~@15", V: "c2@8 db2@8 d2@13 d2@3",
W: "d2@12 ~ d2@3 b1@12 ~ b1@3", X: "c2@8 db2@8 d2@12 ~ d2@3", Y: "d2@11 ~@2 d2@3 g1@13 g1@2 ~",
Z: "g1@16 c2@9 ~@5 c2@2", AA: "c2@8 ~@5 c2@3 g1@10 ~@3 g1@2 ~", AB: "g1@7 ~ g1@2 d2@3 e2@3 c2@11 ~@2 c2@3",
AC: "a1@9 ~@4 a1@3 d2@11 ~ d2@3 ~", AD: "d2@11 ~ d2@2 ~ eb1@12 ~@3 eb1@2", AE: "eb1@8 eb1@8 ab1@10 ~@3 ab1@3",
AF: "bb1@8 eb2@7 ~ ab1@12 ~ ab1@2 ~", AG: "ab1@8 c2@8 db2@12 ~ db2@2 ~", AH: "db2@13 eb2@3 ab1@12 ~ ab1@2 ~",
AI: "ab1@8 c2@8 db2@11 ~@2 db2@3", AJ: "eb2@12 ~ eb2@3 ab1@12 ~ ab1@3", AK: "db2@8 d2@8 eb2@13 eb2@3",
AL: "eb2@12 ~ eb2@3 ~@16",
})).s("gm_electric_bass_finger").gain(0.45)
// drums · kick
const kick = s("bd").struct("<~ A B@16 C@4 D E@8 F G F@2 E A E@7 H ~@18>".pickRestart({
A: "~ x", B: "x ~@12 x ~@2 x ~@15", C: "x ~@12 x ~@2 x ~@12 x ~@2", D: "x ~@7 x ~@7 x ~@12 x ~@2",
E: "x ~@15 x ~@12 x ~@2", F: "x!2", G: "~@16 x ~@12 x ~@2", H: "x",
})).gain(0.5)
// drums · rim
const rim = s("rim").struct("<~@2 [~ x ~ x]!16 ~@45>").gain(0.5)
// drums · snare
const snare = s("sd").struct("<A B ~@16 C@4 D C@8 E D C F C G F C@6 H ~@18>".pickRestart({
A: "~@8 x ~@2 x ~ x ~@7 x ~@2 x ~@2 x ~ x ~@2", B: "x ~@2 x ~ x ~@2 x ~@2 x ~@20", C: "~ x ~ x", D: "~@3 x",
E: "~@8 x ~@15 x ~@4 x ~@2", F: "~@8 x ~@4 x ~@10 x ~@7", G: "~@5 x ~@7 x ~@10 x ~@4 x ~@2", H: "~ x ~@2",
})).gain(0.5)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<[~@3 x ~ x ~@10 x ~@2 x ~@12] ~@62>").gain(0.3)
// drums · low tom
const low_tom = s("lt").struct("<A B ~@15 C ~@4 D ~@9 D ~@3 E@2 ~@25>".pickRestart({
A: "~@13 x ~@2 x ~@12 x ~@2", B: "x ~@12 x ~@18", C: "~@29 x ~@2", D: "~@13 x ~@18", E: "~@8 x ~@2 x ~ x ~@18",
})).gain(0.5)
// drums · hihat
const hihat = s("hh").struct(`<
~ A B C B C B@3 C B C B C B@3 D ~@4 E B F G F B@3 F H I ~@4 E B F B F B@2 J ~@18
>`.pickRestart({
A: "~ x", B: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
C: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@4", D: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@18",
E: "~@16 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", F: "x ~@2 x ~ x ~@2 x ~@2 x ~@4 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
G: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@4 x ~@2",
H: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@4 x ~@2 x ~@4 x ~@2", I: "~@3 x ~ x ~@26",
J: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@15",
})).gain(0.4)
// drums · mid tom
const mid_tom = s("mt").struct("<~@17 A ~@4 B ~@9 B ~@3 C D ~@25>".pickRestart({
A: "~@27 x ~@4", B: "~@11 x ~@20", C: "x ~@2 x ~@4 x ~@2 x ~ x ~@10 x ~@2 x ~ x ~@2",
D: "~@3 x ~ x ~@2 x ~@2 x ~ x ~@18",
})).gain(0.5)
// drums · open hat
const open_hat = s("oh").struct("<~ A ~ B ~ B ~@3 B ~ B ~ B ~@3 C ~@6 A ~ A ~@3 A D E ~@6 A ~ A ~@21>".pickRestart({
A: "~@13 x ~@18", B: "~@29 x ~@2", C: "~ x", D: "~@19 x ~@7 x ~@4", E: "~@8 x ~@2 x ~@20",
})).gain(0.45)
// drums · high tom
const high_tom = s("ht").struct("<~@17 A ~@4 B ~@9 B ~@3 C D ~@25>".pickRestart({
A: "~@3 x", B: "~ x ~@2", C: "x ~@2 x ~@15 x ~ x ~@2 x ~@2 x ~@4", D: "~@3 x ~ x ~@26",
})).gain(0.5)
// drums · crash
const crash = s("cr").struct("<~@2 A ~@7 A ~@7 A ~@3 B ~@7 B@5 C B@2 ~@6 D E ~@17>".pickRestart({
A: "x", B: "~ x", C: "x!2", D: "~@16 x ~@4 x ~@2 x ~@2 x ~ x ~@2", E: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@18",
})).gain(0.45)
// drums · ride
const ride = s("rd").struct(`<
~@32
// … 19 more lines
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.