0:00/0:00
// All God's People — Queen
// 91 bpm, 12/8, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (12/8 at bar 1, 6/8 at bar 17, 12/8 at bar 17) are rendered on a constant 12/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 65 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(91/6)
// 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("<~@27 A B C D@2 E F@3 ~@14 G H I ~@12>".pickRestart({
A: "~@26 [g1,g2,d3,g3,b3]@5 ~", // G
B: "~@2 [d3,g3,b3] e3@4 [g1,g2,e3,g3,c4]@3 [g1,g2,d3,g3,b3]@5 ~@3 [d3,g3,b3]@3 [d3,g3,b3]@3 [g1,g2,e3,g3,c4]@2 [g1,g2,d3,g3,b3]@5 ~, ~@2 [g1,g2]@5 ~@11 [g1,g2]@5 ~@9", // G C G C G
C: "[g1,g2]@2 ~@3 d4 e4 ~ [g3,g4]@3 [g1,g2]@5 [g1,g2]@3 [g1,g2]@5 ~@3 [g1,g2,g3,b3,d4]@5, ~@2 [g1,g2]@5 ~@4 [g3,d4,g4]@16 ~@5", // G G5
D: "[[g1,g2]@3 [g1,g2,e3,g3,b3]@5 [g1,g2,d3,g3,c4]@3 [g1,g2,d3,g3,b3]@5 [g1,g2]@3 [g1,g2,d3,g3,b3]@5 [g1,g2,e3,g3,c4]@3 [g1,g2,d3,g3,b3]@8 [g0,g1] [ab0,ab1] [a0,a1] [bb0,bb1] [b0,b1] [c1,c2] [db1,d1,db2,d2] [eb1,eb2] [e1,e2] [f1,f2] [gb1,gb2] [g1,g2] [ab1,ab2] [a1,a2] [bb1,bb2] [b1,c2,b2,c3] [db2,db3] [d2,d3] [eb2,eb3] [e2,e3] [f2,f3] [gb2,gb3] [g2,g3] [ab2,a2,ab3,a3] [bb1,bb2,ab3,db4,f4]@5]/2", // G Em Gsus4 G C G Ab A …
E: "~ [bb1,bb2]@2 [bb1,bb2]@5 ~ [bb1,bb2,bb3,eb4,g4]@3 [bb1,bb2,bb3,d4,f4]@5 [bb1,bb2]@3 [bb1,bb2,bb3,d4,f4]@5 [bb1,bb2]@3 [bb1,bb2,ab3,d4,f4]@4, ~@12 db4 ~@19", // Bb Eb Bb Bb7
F: "[[bb3,bb4] [bb1,bb2,bb3,bb4]@3 [bb1,bb2,bb3,bb4]@4 [bb3,bb4] [bb1,bb2,bb3,bb4]@3 [bb1,bb2]@3 [bb1,bb2]@2 [bb1,bb2]@3 [bb1,bb2,bb3,d4,f4,bb4]@3 [bb1,bb2]@2 [bb1,bb2]@3 [a1,a2,g3,a3,db4,e4]@3 [a1,a2,g3,a3,db4,e4]@2 [a1,a2,g3,a3,db4,e4]@3 [a1,a2,g3,a3,db4,e4]@3 [a1,a2,g3,a3,db4,e4]@3 [a1,a2,g3,a3,db4,e4]@2 [a1,a2,g3,a3,db4,e4]@3 [a1,a2,g3,a3,db4,e4]@3 [a1,a2,g3,a3,db4,e4]@2 [a1,a2,g3,a3,db4,e4]@3 [a1,a2,g3,a3,db4,e4]@3 [a1,a2,g3,a3,db4,e4]@2 [e4,g4,a4,db5] ~ [e4,g4,a4,db5]!2 ~ [e4,g4,a4,db5]!3 ~ [e4,g4,a4,db5]!3 ~ [e4,g4,a4,db5]!3 ~ [e4,g4,a4,db5]!3 ~ [e4,g4,a4,db5] [db2,db3,e4,g4,a4,db5]@3 [db2,db3,a6]@8 ~@3, ~@12 [bb3,bb4]@8 ~@3 [bb3,d4,f4,bb4]@5 ~@32 [db2,db3]@2 ~ [db2,db3]@2 ~ [db2,db3]@3 [db2,db3]@2 [db2,db3]@2 ~ [db2,db3]@3 [db2,db3]@2 [db2,db3]@2 ~@15]/3", // Bb A7 Gbm Bb Db
G: "[a4,a5] [ab4,ab5]", H: "[a4,a5] [db4,db5]", I: "[ab4,ab5] [c4,c5]",
})).s("gm_piano").gain(0.48).pan(0.7)
// chords · overdriven guitar · "Guit Chords"
const overdriven_guitar = note("<~@42 A@2 B ~@20>".pickRestart({
A: "[~@31 [b3,e4,ab4,b4]@8 [db4,e4,ab4,db5]@8 [eb4,ab4,b4,eb5]@8 ~ [e4,ab4,b4,e5]@8]/2", B: "[gb4,a4,d5,gb5]@3 ~@29",
})).s("gm_overdriven_guitar").gain(0.48).pan(0.4)
// other · overdriven guitar · "Guitar 4" · Csus2
const overdriven_guitar_2 = note(`<
~@26
[~@8 d5 c5 d5 [c5,d5] c5 [c5,d5] d5 c5 d5 c5 d5@8 c5@5 c5]
[d5 ~ e5@8 e5@8 gb5@8 ~@6]
~@37
>`).s("gm_overdriven_guitar").gain(0.47).pan(0.8)
// other · overdriven guitar · "Guitar 2"
const overdriven_guitar_3 = note("<~@25 A B C ~@14 D@2 E ~@20>".pickRestart({
A: "~@25 f4@7", B: "~ e4 f4 e4@6 d4@8 ~ e4@8 f4@5 f4", C: "f4 ~ g4@8 a4@8 a4@8 ~@6",
D: "[~@29 g4@2 ab4@3 ab4@5 ~@3 ab4@5 ~@3 ab4@5 ~ e5@2 b4 d5 b4 d5 [b4,d5] b4]/2", E: "d5@3 ~@29",
})).s("gm_overdriven_guitar").gain(0.27).pan(0.1)
// other · overdriven guitar · "Guitar 3"
const overdriven_guitar_4 = note("<~@25 A B C ~@14 D@2 E ~@20>".pickRestart({
A: "~@25 c4@7", B: "~ c4@8 c4@8 ~ c4@8 c4@5 c4", C: "d4 ~ e4@8 e4@8 gb4@8 ~@6",
D: "[~@29 eb4@2 e4@3 e4@5 ~@3 e4@5 ~@3 e4@5 ~ [b4,db5] b4 ab4 a4 ab4 a4 [ab4,a4] ab4]/2", E: "a4@3 ~@29",
})).s("gm_overdriven_guitar").gain(0.43).pan(0.9)
// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
~ A B C D E F G H B C D I@2 J K@2 L M@7 N O@2 ~@7 P@8 Q R S T U V W X@2 ~@13
>`.pickRestart({
A: "~ [d5,gb5,a5]@3", B: "[e5,g5,c6] [d5,gb5,a5]@3", C: "[e5,g5,bb5,d6] [d5,f5,a5]@2 [e5,g5,c6]",
D: "[f5,bb5,d6] [f5,a5,c6]@3", E: "[e5,g5,b5,db6] [f5,a5,d6]@3", F: "[e5,g5,bb5,db6] [f5,a5,d6]@3",
G: "[e5,g5,bb5,db6] [f5,a5,c6] [f5,bb5,d6] [f5,a5,c6]", H: "[a4,e5,g5] [d5,gb5,a5]@3",
I: "[[bb4,eb5,g5] [f4,bb4,d5]@2 [g4,bb4,c5,e5]@2 [d5,f5,a5]@3]/2", J: "~ [f5,bb5,d6] [f5,a5,c6] [g5,bb5,eb6]",
K: "[[c5,g5,bb5]@8 [a4,d5,f5,a5]@16 ~ [b4,d5,f5,a5]@32 [d5,f5,g5,bb5]@7]/2", // C7 Dm Bm7b5 Gm7
L: "~ [f5,g5,bb5,d6]@8 [g5,bb5,d6,f6]@3 ~@13 [f4,a4,c5]@3 [f4,a4,c5]!3 ~", // Gm7 F
M: "[f4,a4,c5] [f4,bb4,d5] [f4,bb4,d5,f5]@7 [f4,a4]@3 [f4,a4]!3 ~ [f4,a4] [e4,g4] [e4,g4,c5]@7 [f4,a4,c5]@3 [f4,a4,c5]!3 ~", // F Bb F Em C F
N: "[f4,a4,c5] [f4,bb4,d5] [f4,bb4,d5,f5]@7 [f4,a4]@3 [f4,a4]!3 ~ [f4,a4] [e4,g4] ~ [e4,g4,c5]@6 [c5,f5,a5]@7", // F Bb F Em C F
O: "[~ [c5,e5,g5]@8 [c5,d5,f5]@8 ~ [c5,e5,g5]@8 [c5,f5,a5]@8 [c5,e5,g5,c6]@8 [e5,g5,db6]@8 [gb5,a5,d6]@8 ~@6]/2", // C Dm7 C F C Dbdim D
P: "[~@29 [d5,gb5,a5]@24 [e5,g5,c6]@8 [d5,gb5,a5]@24 [e5,g5,bb5,d6]@8 ~ [d5,f5,a5]@16 [e5,g5,c6]@8 [f5,bb5,d6]@8 [f5,a5,c6]@24 [g5,bb5,eb6]@8 [f5,bb5,d6]@16 [g5,bb5,db6,e6]@16 ~@3 [a5,d6,f6]@8 [a5,db6,e6]@8 [a5,c6,eb6]@8 ~ [a5,b5,d6]@5 [f4,bb4,d5]@8 [f4,a4,c5]@8 [g4,bb4,eb5]@8 [g4,bb4,c5]@5 ~ [eb4,g4,bb4]@2 [e4,ab4,b4], ~@191 a6@32 ~@33]/8", // D C D Em7b5 Dm C Bb F …
Q: "~@7 [e4,ab4,db5]@8 [ab4,b4,eb5]@8 ~ [ab4,b4,e5]@8", R: "[a4,d5,gb5]@3 ~@13 [d5,gb5,a5]@16",
S: "[e5,a5,db6]@3 [g5,b5,d6]", T: "[e5,a5,db6]@3 [f5,a5,b5,d6]", U: "[e5,a5,c6]@2 [d5,g5,b5] [f5,a5,c6,d6]",
V: "[e5,g5,c6]@3 [f5,bb5,d6]", W: "[f5,a5,c6] [d5,e5,ab5,b5]", X: "[[a5,e6,a6]@3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.2)
// bass · electric bass finger · "Bass"
const bass = note(`<
~ A@3 B C D E F G H I J K@2 L M N O@7 P Q@2 R S T U V W@2 X Y Z AA@6 AB AC AD AE AF AG AH AI AJ AK@2 AL@10
>`.pickRestart({
A: "~@8 d2@3 d2 c2 ~ d2@3 ~@15", B: "~@3 bb2 g2 ~ c2 g1 f1@3 f1!2 ~ f1@3 ~@15",
C: "c3@3 bb2@3 g2@2 f2@3 f2!2 ~ f2@3 ~@15", D: "e3@8 d2@3 d2 c2 ~ d2@3 ~@15", E: "f2 ~ g2 g2@5 a2@8 bb2@8 f2@8",
F: "db2@8 d2@3 d2 c2 ~ d2@3 ~@15", G: "~@2 f2 g2@3 c2@2 d2@3 d2 c2 ~ d2@3 ~@15", H: "d3@8 d2@3 d2 c2 ~ d2@3 ~@15",
I: "~@2 f2 g2!2 ~ c2@2 f2 ~ f2@2 f2@4 f2@4 f2 ~ f2@2 f2@8", J: "~@6 g1 a1 bb1 ~ bb1@2 bb1@4 bb1@8 a1@8",
K: "[~@8 d2 ~ d2@2 d2@28 bb1@8 ~@3 a1@3 c2@3 ~@7]/2", L: "e1@3 g1@3 c2@2 d2@16 ~ g1@7",
M: "~ g2@8 g2@8 g2@8 c2@3 c2@2 c2@2", N: "~ c2!2 ~ c2!3 ~ c2 c3@3 ~@13 f2@3 ~@4",
O: "~@8 e1 f1@3 ~@10 c2 ~ e2 f2@3 ~@4", P: "~@8 e1 f1@3 ~@5 f1@3 f1@3 f1@2 f1@7",
Q: "[~ f2@8 f2@8 ~ f2@8 f2@8 e2@8 a1@8 d2@8 g1@5 ~]/2", R: "~@2 g1@5 g1@3 g1@5 ~@3 g1@5 ~ g1@2 g1@5 ~",
S: "g1@2 g1@3 c2@3 f1@3 g1@5 g1@3 g1@2 d2@3 f2@3 g1@5", T: "g1@3 g1@5 g1@3 g1@5 g1@3 d2@3 f2@2 d2@3 g1@5",
U: "g1@3 g1@5 ~@3 g1@5 ~@3 g1@5 ~@3 bb1@5", V: "~ bb1@2 bb1@5 ~ bb1@3 bb1@5 bb1@3 bb2!3 ~ bb2!2 f2 ~ bb1@4",
W: "[~ bb1@3 bb2@3 ab2@2 f2@3 bb1@3 bb1@2 bb1@3 bb2 ab2 ~ g2 f2 d2 ~ bb1 a1@8 a2@8 a1 ~ a1!3 ~ a1!3 ~ a1!3 ~ a1!2 db2 ~ db2!2]/2",
X: "~ db2!3 ~ db2!3 ~ db2!3 ~ e2!3 ~ e2!3 ~ e2!3 ~ e2!3 ~ d2@3", Y: "d2 c2 d2@3 ~@19 g2 f2 d2 ~ c2 d2@3",
Z: "d2 c2 ~ d2@3 ~@18 a1 c2 ~ d2 c2 ~ d2@2",
AA: "[d2 ~ c2 d2@3 ~@18 g2 ~ f2 d2 ~ c2 f1 f1@3 f1@4 ~@16 f1@3 f1@3 f1@2 bb1@4 bb1@4 bb1@8 a1@8 ~@9 d2@27 g2 f2 d2 ~ c2 bb1@4 bb1@4 f2@3 a1@2 c2@3 g2@4 g2@4 e2@3 g1@3 eb2@2 e2@5 ~ e2@2 e2@3 e2@3 e2@2 e1@3 e1@3 e1@3 e1@2 e1@3 e1@3]/6",
AB: "e2@3 ~@13 e2@16", AC: "a1@3 a1 g1 a1@3 ~@4 a2!2 ~ a2!2 g2 ~ a2 g2 a2@5 ~ gb2 e2 db2 ~ b1",
AD: "a1@3 a1 g1 a1@3 ~@9 a2 ~ a2!2 a2@3 g1@8", AE: "a1@3 a1 g1 a1@3 ~@21 d2 ~ g1",
AF: "c2 c2@3 c2@4 ~@16 c2@3 c2@2 c2@3", AG: "f1 e1", AH: "a2 ab2", AI: "gb2 db2", AJ: "g2@2 c2 a3",
AK: "[a1@59 ~@5]/2", AL: "a1@3 a1 g1 a1@3 ~@24",
})).s("gm_electric_bass_finger").gain(0.48)
// chords · string ensemble 1 · "Strings"
const string_ensemble_1_2 = note(`<
~ A B@3 C D E F B@3 G@2 H I@3 ~@7 J@3 ~@7 K@7 L@3 M N O P Q R S T U@2 ~@10
>`.pickRestart({
A: "~ [d2,d3,a3]@3", // D5
B: "[[bb3,c4] a3@3 [bb3,d4] [d2,d3,a3]@2 [e3,c4] [bb3,d4] [f2,f3,a3,c4]@3, ~ [d2,d3]@4 ~@2 [c2,c3]@2 ~@3]/3", // Bbsus2 Bb D5 C Bb F D C
C: "[bb3,db4] [f2,f3,a3,d4]@3", D: "[bb3,db4] [d2,d3,a3,d4]@3",
E: "[g1,g2,bb3,db4] [a1,a2,a3,c4] [bb1,bb2,bb3,d4] [f2,f3,a3,c4]", F: "[db2,db3,a3] [d2,d3,a3]@3",
G: "[[f1,f2,f3] [bb1,bb2]@2 [a1,a2]@2 [d2,d3,a3]@3]/2", H: "~ bb2 a2 g2", I: "[e2@8 d2@16 ~ g2@32 c3@19 ~@20]/3",
J: "[~@25 f2@32 ~ [f2,f3]@8 [e2,e3]@8 [a1,a2]@8 [d2,d3]@8 ~@6]/3", // F E A D
K: "[~@29 [gb3,a3]@24 [g3,bb3,c4]@8 [gb3,a3]@24 [g3,bb3,d4]@8 ~ [d2,d3,f3,a3]@16 [g3,c4]@8 [bb3,d4]@8 [f2,f3,a3,c4]@24 [f1,f2,g3,bb3,eb4]@8 [bb1,bb2,f3,bb3,d4]@16 [a1,a2,g3,bb3,db4,e4]@16 ~@3 [a3,d4,f4]@8 [a3,db4,e4]@8 [a3,c4,eb4]@8 ~ [a3,b3,d4]@5 bb2, ~@29 [d2,d3]@32 [d2,d3]@32 ~@17 [c2,c3]@16 ~@65 [d2,d3]@32 ~]/7", // Gbm C7 Gbm Gm Dm C5 Bb F …
L: "[~@7 a2@8 g2@8 e2@5 ~ eb2@2 b2@8 db3@8 eb3@8 ~ e3@8 gb3@3 ~@13 [e1,e2,e3,a3]@16, ~@31 e2@35 ~@30]/3", // A5
M: "[e3,a3,db4]@3 [g3,b3,d4], [a1,a2]", N: "[a1,a2,e3,a3,db4]@3 [g1,g2,f3,a3,b3,d4]",
O: "[a1,a2,e3,a3,c4]@2 [d3,g3,b3] [f3,a3,c4,d4], ~ [g1,g2]", P: "[g3,c4]@3 [bb3,d4], [c2,c3]",
Q: "[f2,f3,a3,c4] [e2,e3,ab3,b3]", R: "[a2,a3] [ab2,ab3]", S: "[a2,a3] [db2,db3]", T: "[ab2,ab3] [c2,c3]",
U: "[[a1,a2]@37 ~@27]/2", // A
})).s("gm_string_ensemble_1").gain(0.36).pan(0.7)
// other · timpani
const timpani = note("<~@19 A ~ A ~ A ~ B ~@39>".pickRestart({
A: "~@20 f2!2 f2@3 f2@7", B: "~@20 f2!2 ~ f2@2 f2 ~@6",
})).s("gm_timpani").gain(0.42)
// drums · kick
const kick = s("bd").struct(`<
~ A B@3 C D E F B G H I A J K L M N@7 O P Q R S@2 T U V W X Y Z AA AB AC AD AE AF AG AH@4 AI AJ ~@14
>`.pickRestart({
A: "~@2 x!2 ~@4", B: "~@2 x!2 ~@2 x ~ x ~@3 x ~@19", C: "x ~@2 x ~@2 x ~ x ~@3 x ~@19", D: "x ~ x!2 ~@4",
E: "x ~ x!2 ~@2 x ~", F: "x ~@2 x!2 ~ x ~@9", G: "~@3 x ~@2 x ~ x ~@3 x ~@7 x ~ x ~ x ~@7",
H: "~@3 x ~@2 x ~ x ~@3 x ~@19", I: "~@3 x ~@2 x ~ x ~@3 x ~@11 x ~@7", J: "~@3 x!2 ~ x ~@9",
K: "~@6 x ~ x ~@3 x ~@12 x ~@6", L: "~@14 x!2", M: "~@2 x ~ x!3 ~ x ~@9 x ~ x ~ x ~@2 x ~@6",
N: "~@8 x!2 ~@10 x ~ x ~@2 x ~@6", O: "~@8 x!2 ~@7 x ~@7 x ~@6", P: "~@9 x ~@13 x ~@2 x ~@5",
Q: "~@2 x ~@18 x ~ x ~@2 x ~@4 x", R: "~@7 x ~@2 x ~@5 x ~@7 x ~ x ~@5", S: "x ~@7 x ~@2 x ~@4 x ~@7 x ~@2 x ~@4",
T: "x ~@6 x ~@5 x ~@4 x ~@3 x ~@2 x ~ x ~@4", U: "~ x ~@7 x ~@2 x ~@4 x ~@7 x ~@2 x ~@3",
V: "~ x ~@7 x ~@2 x ~@4 x ~@7 x ~@5 x", W: "~ x ~@5 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2 x ~@4 x",
X: "~@3 x ~@3 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2", Y: "~ x ~@20 x ~ x ~ x ~@2 x ~@2",
Z: "~ x ~@22 x ~@2 x ~@2 x ~", AA: "~@2 x ~@21 x ~@2 x ~@2 x!2", AB: "~@2 x ~@19 x ~@2 x ~@2 x ~ x ~",
AC: "~@2 x ~@11 x ~@16 x", AD: "~@3 x ~@24 x ~@2 x", AE: "~@3 x ~@11 x ~@3 x ~@9 x ~ x",
AF: "~@7 x ~@7 x ~@9 x!2 ~@2 x ~@2", AG: "x!2", AH: "x ~@3 x ~@22 x ~ x ~@2", AI: "x!2 ~@6", AJ: "x",
})).gain(0.36)
// drums · rim
const rim = s("rim").struct("<~@2 A@14 B C@8 ~@11 D@2 E ~ F@2 ~@3 G@20>".pickRestart({
A: "x", B: "~ x ~@30", C: "~@17 x ~@14", D: "~@21 x ~@10", E: "~@11 x ~@4", F: "~@23 x ~@8", G: "~@3 x",
})).gain(0.36)
// drums · snare
const snare = s("sd").struct("<~@4 A B C@10 D E ~@7 F G H I J K L M N O P Q@2 R S T U V W X Y@4 Z ~@15>".pickRestart({
A: "~@31 x", B: "x ~@2 x ~@2 x ~@9 x ~@15", C: "~ x", D: "~ x ~@7 x ~@7 x ~@7 x ~@6", E: "~ x ~@7 x ~@22",
F: "~@12 x ~ x ~@2 x ~@2 x ~@2 x!3 ~@2 x ~@2 x", G: "~ x ~@2 x ~@2 x!3 ~@2 x ~@2 x ~@2 x ~ x ~@2 x!2 ~ x ~ x ~@2 x",
H: "~@2 x ~ x ~@2 x!2 ~ x ~ x ~@2 x ~@2 x ~@2 x ~ x ~ x ~@6", I: "~ x ~@7 x ~@6", J: "~@2 x ~@16 x ~@12",
K: "~@3 x ~@15 x ~@12", L: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@2 x ~@6", M: "~@3 x ~@16 x ~@11",
N: "~ x ~@3 x ~ x", O: "~ x ~ x ~ x ~ x", P: "~ x ~@3 x ~@7 x ~ x ~@2 x ~@2 x ~@10", Q: "~@5 x ~@26", R: "~@3 x ~@12",
S: "~@6 x ~@12 x ~@2 x ~@2 x ~@2 x ~@3", T: "~@6 x ~@20 x!2 ~@3", U: "~@7 x ~@24", V: "~@7 x ~@15 x ~@8",
W: "~@22 x ~@2 x ~@2 x ~ x ~", X: "x", Y: "~ x ~@2", Z: "~@8 x ~@20 x ~@2",
})).gain(0.54)
// drums · hihat
const hihat = s("hh").struct("<A B@6 C@2 B@7 D E@9 F G H I J K L@2 ~@2 M@2 N O P Q@2 R ~ S@20>".pickRestart({
A: "~ x!3", B: "x ~@30 x", C: "~@31 x", D: "~ x ~@7 x ~@7 x ~@14", E: "~@16 x!2 ~@14", F: "~@8 x!2 ~@6",
G: "~@17 x!2 ~@7 x ~@2 x ~ x", H: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2",
I: "x ~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
J: "x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~",
K: "x ~@2 x ~@2 x ~@4 x ~@3 x ~@3 x ~@2 x ~@4 x ~@4", L: "~@7 x", M: "~@20 x!2 ~@10", N: "~@10 x!2 ~@4",
O: "~@21 x!2 ~@9", P: "~@21 x ~@10", Q: "~@22 x!2 ~@8", R: "~@11 x!2 ~@3", S: "~@23 x!2 ~@7",
})).gain(0.42)
// drums · mid tom
const mid_tom = s("mt").struct("<~@35 [~@26 x!3 ~@3] ~@14 [~@9 x ~ x!3 ~ x!3 ~ x!3 ~ x ~@8]!15>").gain(0.3)
// drums · high tom
const high_tom = s("ht").struct(`<
~@35
[~@23 x!3 ~@6]
~@14
[~@25 x ~ x!3 ~ x]
[x!2 ~ x!3 ~ x ~@17 x ~ x!3 ~ x]!13
[x!2 ~ x!3 ~ x ~@17 x ~ x!3 ~@2]
>`).gain(0.3)
// drums · tambourine
const tambourine = s("tb").struct("<~ A@15 ~ B@9 C@2 ~@8 D E@3 F@3 G ~ G@9 H@11>".pickRestart({
A: "~@13 x ~@2", B: "~@5 x ~@10", C: "~@11 x ~@20", D: "~@7 x ~@8", E: "~@15 x ~@16", F: "~ x", G: "~@17 x ~@14",
H: "x!2 ~@3 x ~ x ~@9 x ~@14",
})).gain(0.36)
// drums · crash
const crash = s("cr").struct("<~@8 A ~@2 A B A ~@17 C D ~ E F ~@2 G@2 H ~@3 I ~@20>".pickRestart({
A: "~ x ~@2", B: "~ x ~ x", C: "~@25 x ~ x ~@4", D: "~@7 x", E: "~@3 x ~@3 x",
F: "~ x ~@3 x ~@7 x ~ x ~@2 x ~@2 x ~@7 x ~@2", G: "~@15 x", H: "~@14 x ~@16 x", I: "x",
})).gain(0.42)
// drums · ride
const ride = s("rd").struct("<~@31 A B C D E ~@17 F ~@3 F@2 ~ G F@2 ~ G>".pickRestart({
A: "~@15 x", B: "~ x ~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@4 x ~",
C: "~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@5 x",
D: "~ x ~@2 x ~@2 x ~@2 x ~@4 x ~@2 x ~ x ~@2 x ~@2 x ~@5", E: "~@7 x ~@2 x ~@21", F: "x", G: "~@27 x ~ x ~@2",
})).gain(0.42)
// drums · bongos
const bongos = s("bongo:4").struct("<~@7 A B ~@8 C D@8 E F ~@37>".pickRestart({
A: "x ~ x!2 ~@12", B: "x ~@2 x ~@2 x ~@25", C: "~@12 x!2 ~@6 x!2 ~@6 x!2 ~@2",
D: "~@4 x!2 ~@6 x!2 ~@6 x!2 ~@6 x!2 ~@2", E: "~@4 x!2 ~@6 x!2 ~@6 x ~ x ~@5 x ~ x ~",
F: "~@4 x ~ x ~@5 x ~ x ~@6 x!2 ~@9",
})).gain(0.79)
// drums · bongos
const bongos_2 = s("bongo:18").struct("<~ A@14 B C D E@7 F G H ~@8 I J K L M N O P ~ Q@5 ~@15>".pickRestart({
A: "~@19 x!2 ~ x!3 ~ x!3 ~ x!2", B: "~@19 x ~ x!3 ~ x!3 ~ x!3", C: "~@20 x!3 ~ x ~@7",
D: "~@4 x!3 ~ x ~@5 x ~ x ~@5 x ~ x ~@5 x ~", E: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x",
// … 35 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.