0:00/0:00
// The Show Must Go On — Queen
// 84 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 90 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): OVERDRIVE, GTHARMONIC.
setcpm(84/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.
// bass · fretless bass · "FRETLESS"
const bass = note(`<
~ A B@2 ~@3 C@2 D@2 E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD X AE AF AG T AH AI AJ AK AL AM AN AO AP AQ
AR AS AT AU AV T AW AX AY AZ BA BB BC BD BE BF BG BH T BI BJ BK BL BM BN T BO G BP BQ@6 ~@3
>`.pickRestart({
A: "~@7 a3", B: "[g3@31 ~]/2", C: "[b2@27 ~ c4 b3 a3 g3]/2", D: "[f3@6 d3@2 g2@6 d3 g3@7 d3@2 g2@4 f#2@4]/2",
E: "e2 b2 e3@2 b2 e2@3", F: "f#2@6 c#3@2 f#3@6 c#3 f#3", G: "e2", H: "b1@7 f#2", I: "b2", J: "g2@7 d3", K: "g3@3 f#3",
L: "e3@12 e3 b2 e2 f2", M: "f#2@6 c#3@2 f#3@6 c#3 f#2", N: "e2@2 e2!4 f#2 a2@5 g2@4", O: "b1@5 ~ b1 ~ b1@8",
P: "b1@5 ~ b1 ~ b1@6 a1 ~", Q: "g1@5 ~ g1 ~ g1@7 ~", R: "g1@5 ~ g1 ~ g1@5 ~ g1 f#1",
S: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", T: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
U: "e2@3 b2 e3@3 b2", V: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 f#2", W: "b2@15 ~",
X: "c#2@5 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~", Y: "c#2@6 g#1@2 c#2@4 c#3@2 e2 c#2", Z: "a1@5 ~ e2@2 a2@6 e2@2",
AA: "a1@6 a1 ~ a1 ~ a1@2 g#1 ~ g#1 ~", AB: "f#1@6 f#1 ~ f#1@4 f#2@2 c#2 f#1",
AC: "g#1@5 ~ d#2@2 g#2@3 ~ g#2@2 f2 d#2", AD: "f#1@5 ~ f#1 ~ f#1@4 f#1@4",
AE: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ b1 ~ b1 ~", AF: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
AG: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ g#1 ~ g#1 ~", AH: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~",
AI: "f#2@8 f#1@3 ~ f#1 ~ f#1 ~", AJ: "e1!8 ~@8", AK: "b1@5 ~ b1 ~ b1@5 ~ b1!2",
AL: "b1@2 c#2@2 d2@2 c#2@2 b1@5 ~ a1@2", AM: "g1@4 g1 ~ g1 ~ g1@5 ~ g1!2",
AN: "a2@2 b2@2 a2 g2@3 e2 d2 b1 a1 g1 a1 b1 d2", AO: "e2@6 b1@2 e1@6 e1!2", AP: "f#1@2 f#1!2 f#1@2 c#2@2 f#2@6 f#2!2",
AQ: "e2!3 ~ e2@2 b1@2 e1@8", AR: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1!2",
AS: "b1!2 c#2!2 d2!2 f#2!2 d2!2 c#2!2 b1!2 a1!2", AT: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ d2 ~",
AU: "g2 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ f#1 ~ f#1 ~", AV: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 f1",
AW: "e1@5 ~ e1 ~ e1@5 ~ e1 ~", AX: "f1@5 ~ f1!2 f1@3 ~ f1 ~ f1 ~", AY: "e1 ~ e1 ~ e1 ~ e1 ~ a1@4 g1@3 ~",
AZ: "f1 ~ f1 ~ f1 ~ f1 ~ f2@3 ~ f2 ~ f2 ~", BA: "e2@2 e1 ~ e1 ~ e1 ~ a1@4 e2 ~ d2 ~",
BB: "c#2!3 ~ c#2 ~ c#2 ~ c#2 ~ c#2 a1 c#2 a1 c#2 a1", BC: "d2!7 d1 ~@8", BD: "b1!3 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
BE: "b1!3 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 a1", BF: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
BG: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ f#1 ~ f#1!2", BH: "e1 ~ e1 ~ b1!2 d2 ~ e2!3 ~ e2 d2 b1 a1",
BI: "e2 ~ e2 ~ e2 ~ e2 ~ e1 ~ e1 ~ e1 ~ e1 ~", BJ: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
BK: "b2 a2 f#2 a2 b2@2 a2 f#2 b2 a2 f#2 a2 b2@2 a2 d2", BL: "g1@5 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
BM: "g1 ~ g1!3 ~ g1!2 [g1,a1] ~ g1!2 f#1 ~ f#1!2", BN: "e1 ~ e1 ~ e1 ~ b1 e2!2 ~ e2 ~ e2 ~ e2 b1",
BO: "e1 ~ e1 ~ e1 ~ e1 ~ e1@3 ~ e1@2 b1@2", BP: "e4!8 e4@7 ~", BQ: "[~ b1@10 ~]/6",
})).s("gm_fretless_bass").gain(0.36)
// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
~@12 A ~@3 B@2 ~@12 C@2 D E F G@2 H I J K L M N O ~@6 P@2 Q R S T U V W X Y Z AA AB ~@3 AC AD AE AF AG AH AI@2 AJ AK
AL@2 AM ~@9
>`.pickRestart({
A: "c#5", B: "[~@2 b3 ~ b3@3 ~ b3@23 ~]/2", C: "[~@4 c#5 ~@5 g#4 ~ b4@8 ~@4 g#4 ~ f#4@2 e4 c#4 f#4 c#4]/2",
D: "e4@8 d#4 ~@3 c#5@2 a4 ~", E: "b4@2 c#5@7 ~ e4 ~ f#4@2 e4 f#4", F: "e4@5 ~@5 f#4@4 e4 c#4",
G: "[g#3@7 ~@5 f#3@2 g3 e3@7 ~@2 g#4@4 c#4@2 a3@2]/2", H: "g#3 ~",
I: "~@2 g#4 ~ c#5@3 g#4 c#5@2 g#4 a4 g#4 f#4 e4 d#4", J: "e4@15 ~", K: "e5@6 f#4 ~ b4@3 e4 a4@3 g#4",
L: "f#4@5 ~ f#5@2", M: "e5 c#5@2 c5", N: "c#5 ~", O: "e4@7 ~@9", P: "[~@5 a4@2 a4@3 a4@3 a4@2 ~]/2",
Q: "b4 a4 f#4 a4 b4 g#4 a4 [b4,c#5] d5 c#5 ~ [b4,c#5] d5 [e5,f#5] g5 a5", R: "b5@5 ~ b5 c#6@7 c#6@2",
S: "[c#6,d6] b5 c#6 ~ b5 a5 b5@4 a5@2 ~@4", T: "g5 f#5", U: "e5@3 d5@3 c#5@2", V: "b4 a#4", W: "a4@15 ~",
X: "~@2 g4@2 ~@2 d4 ~ [a3,e4,a4,c5]@4 ~@4, e4@3 ~@5, ~ b4 ~@2", Y: "~@2 a4@2 c5@4 ~@2 b4@2 d5@3 ~, f4@7 ~ f4@7 ~",
Z: "~@2 g4@2 b4@2 d4@2 [a3,e4]@2 e4 ~ e4 ~ d4 ~, e4@3 ~ [a4,c5]@2 ~@2", AA: "c#4@3 ~",
AB: "~@2 [a3,g4] [d3,a3,d4,g4]!4 [d3,d4,f#4] ~@8", AC: "~@8 d4 c#4 d4 c#4 b3 a3 b3 a3",
AD: "[e3,b3,e4]@8 [e3,c#4]@6 [e3,b3] ~", AE: "[f#3,b3]@5 ~ [f#3,b3] ~ [f#3,c#4]@7 ~", AF: "[e3,b3,e4,g4]@4 ~ f#5!3",
AG: "b5@4 b5@4 b5@4 [f#4,a4] ~ c#5 d5", AH: "c#5 d5 c#5 [c#5,d5] b4 [c#5,d5] e5 f#5 a5@5 f#5 e5 d5, ~@8 g5 ~@7",
AI: "[b5@7 ~ b5@6 ~ d6@2 d6 b5 d6 b5 c#6 b5 a5 b5@4 g5 f#5 e5 d5]/2", AJ: "e5 ~",
AK: "[f#4,b4,c#5]@8 [f#4,a#4,c#5]@7 ~", AL: "[e4@31 ~]/2", AM: "e4!4 ~@12",
})).s("gm_overdriven_guitar").gain(0.45).pan(0.7)
// other · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note("<~@28 A@2 ~@4 B@2 ~@4 C ~@23 D ~@25>".pickRestart({
A: "[b4@25 ~@7, f#5@17 ~@15]/2", B: "[c-1@9 ~@7]/2", C: "~@7 e4 ~@8", D: "[d3,a3,d4,g4]!2 [d3,d4] ~@13",
})).s("gm_overdriven_guitar").gain(0.25).pan(0.7)
// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
~@13 A ~@7 B C D E F G H I@3 ~@13 J K L M N O P Q R S T U V W X Y Z AA AB AC AD R AE AF AG AH AI AJ AK AL AM AN AO AI
AP@2 AQ ~ AR@3 ~@5
>`.pickRestart({
A: "~ e4@15, [e3,g3,b3]", B: "[b2,f#3,b3]@13 ~ [b2,f#3,b3]!2",
C: "[b2,f#3,b3]@7 [b2,f#3,b3] [b2,f#3,b3]@3 ~ a3@2 g3 a3", D: "[g2,d3,g3]@14 [g2,d3,g3] ~",
E: "[g2,d3,g3]@6 g3 ~ [g2,d3,g3]@8", F: "[e3,g3,b3,e4]@7 ~", G: "[f#3,c#4,f#4]@15 ~", H: "[e3,g3,b3,e4]",
I: "[[b2,f#3]@12 g#4 f#4 c#4 a3@5 ~@4]/3", J: "~@2 [e2,b2,e3,g3]!6 ~@8",
K: "[b2,f#3,b3]@6 [b2,f#3,b3] ~ [b2,f#3,b3]@5 ~ [b2,f#3,b3]!2", // B5
L: "[b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3]@4 b2@2 a2 b2", // B5
M: "[g2,d3,g3]@13 ~ [g2,d3,g3]!2", N: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3]@7 ~",
O: "[g2,b2,e3]@5 ~ [g2,b2,e3,g3] ~ [b2,e3,g3]@8, g3 ~@15", // Em
P: "~ f#2 [f#2,c#3,f#3]!3 ~ [f#2,c#3,f#3] ~ [f#2,c#3,f#3]@8", Q: "~ g3@15, [e2,b2,e3]@15 ~",
R: "[b2,f#3,b3]@5 ~ [b2,f#3,b3] ~ [b2,f#3,b3]@5 ~ [b2,f#3,b3] ~", // B5
S: "[b2,f#3,b3]!3 ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3]@3 ~ b2@2 a2 b2", // B5
T: "[g2,d3,g3]@5 ~ [g2,d3,g3] ~ [g2,d3,g3]@8", // G5
U: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3]@3 ~ f#2@4", // G5
V: "~ g3@7 [e2,c#3,g3]@8, [e2,b2,e3] ~", W: "~ b3@5 f#2 ~@2 a#3@7, [f#2,c#3,f#3]@3 ~ [f#2,c#3,f#3]@4",
X: "~ g3@7 g2@8, [e2,b2,e3] ~", Y: "[f2,c3,f3,a3]@4 ~ d3 g3@2, ~@2 f2 ~", Z: "~ b2 g3 d3 a2@2 g2@2, e2 [e3,a3,c4]",
AA: "[f2,c3,f3,a3]@4 ~@2 d3 g3, ~ f2", AB: "~ b2 g3 d3 [a2,e3,a3,c4]@2 e3 d3, e2 ~", AC: "c#3",
AD: "~@2 [a3,d4,g4] [d3,a3,d4,g4]!4 [d3,a3,d4,f#4] ~@8", AE: "[b2,f#3,b3]@5 ~ [b2,f#3,b3] ~ [b2,f#3,b3]@4 b2@2 a2 b2",
AF: "[g2,d3,g3,b3]@5 ~ [g2,d3,g3,b3] ~ [g2,d3,g3,b3]@5 ~ [g2,d3,g3,b3] ~", // G
AG: "[g2,d3,g3,b3]@5 ~ [g2,d3,g3,b3] ~ [g2,d3,g3,b3]@3 ~ f#2@4", // G
AH: "[e2,b2,e3,g3]@5 ~ [e2,b2,e3,g3] ~ [e2,b2,e3,g3]@8", AI: "[f#2,c#3,f#3]@6 [f#2,c#3,f#3] ~ [f#2,c#3,f#3]@8",
AJ: "[e2,b2,e3,g3]@8 e3@4 g2 f#2 g2 a2", AK: "[b2,f#3,b3]@5 ~ [b2,f#3,b3] ~ [b2,f#3,b3]@8",
AL: "[b2,f#3,b3]@5 ~ [b2,f#3,b3] ~ [b2,f#3,b3]@3 ~ b2@2 a2 b2", AM: "[g2,d3,g3,b3]@6 [g2,d3,g3,b3] ~ [g2,d3,g3,b3]@8",
AN: "[g2,d3,g3,b3]@5 ~ [g2,d3,g3,b3] ~ [g2,d3,g3,b3]@4 g2 f#2 g2 a2", AO: "[e2,b2,e3,g3]",
AP: "[[e2,b2,e3,g3]@15 ~]/2", AQ: "e2!4 ~@12", AR: "[~@6 [b2,f#3,b3,d4,f#4] ~ [b2,f#3,b3,c#4,f#4]@31 ~@9]/3",
})).s("gm_distortion_guitar").gain(0.22)
// chords · distortion guitar · "DISTORTION" · soft notes
const distortion_guitar_soft = note("<~@24 A ~@19 B ~@4 C D ~@13 E ~@25>".pickRestart({
A: "~@6 [g2,d3] ~@9", B: "[e2,b2,e3,g3]!2 ~@14", C: "~ g2", D: "[f#2,c#3,f#3] [c#3,f#3] ~@14",
E: "[d3,a3,d4,g4]!2 d3 ~@13", // Dsus4
})).s("gm_distortion_guitar").gain(0.1)
// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_2 = note("<~@51 [~@3 f#4] [f#4@6 f#4@2 f#4@6 f#4 ~] ~@11 [~@7 a3 ~@8] ~@25>")
.s("gm_overdriven_guitar").gain(0.45).pan(0.3)
// other · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft_2 = note(`<
~@51
[~@3 f4]
[f4@6 e4@2 e4@6 ~ f#4]
~@3
[f5 e5]
[d5@3 c5@3 b4@2]
[a4 g#4]
~@31
>`).s("gm_overdriven_guitar").gain(0.2).pan(0.3)
// other · guitar harmonics · "GTHARMONIC"
const guitar_harmonics = note("<~@11 A ~ B@2 ~@36 C D ~@2 E ~@16 F ~@17>".pickRestart({
A: "~@3 e5", B: "[~@12 a4@19 ~]/2", C: "~@3 f#2", D: "f#2@6 f#2@2 f#2@6 f#2!2", E: "~@3 a#5 ~@12", F: "~@13 a4 ~@2",
})).s("gm_guitar_harmonics").gain(0.29)
// other · guitar harmonics · "GTHARMONIC" · soft notes
const guitar_harmonics_soft = note("<~@16 A@2 ~@11 B@3 ~@58>".pickRestart({
A: "[~@5 b4@11]/2", B: "[~@7 a2@15 ~@2, ~@2 g#3@9 ~, ~@5 f#3@17 ~@2, ~@3 c#3@8 ~]/3",
})).s("gm_guitar_harmonics").gain(0.13)
// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
A@2 B@2 C D E A@2 B@2 C D E A@2 B@2 C D F A@2 B@2 C D E ~@2 G@2 H@2 I J K G@2 H@2 I J L ~ A@2 B@2 C D E A@2 B@2 C D E
M N M O P Q A@2 B@2 C D E A@2 B@2 C D R@2 S T@8 ~
>`.pickRestart({
A: "[[f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,c#4] ~ [f#3,b3,c#4] ~ [f#3,b3,c#4] ~ [f#3,b3,c#4] ~ [f#3,b3,e4] ~ [f#3,b3,e4] ~ [f#3,b3,e4] ~ [f#3,b3,e4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4]@2, [b1,b2]@7 a2]/2", // Bm F#sus4 Esus2 Bm B
B: "[[g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,c#4] ~ [g3,b3,c#4] ~ [g3,b3,c#4] ~ [g3,b3,c#4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4]@2, g2@7 f#2]/2", // G C#m7b5 Em G
C: "[g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,c#4] ~ [g3,b3,c#4] ~ [g3,b3,c#4] ~ [g3,b3,c#4] ~, e2", // G C#m7b5
D: "[f#3,b3,c#4] ~ [f#3,b3,c#4] ~ [f#3,b3,c#4] ~ [f#3,b3,c#4] ~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~, f#2", // F#sus4 F#
E: "b3 a#3, [e2,e3,g3]", F: "[e2,e3,g3,b3]@2 a2 g2, ~ [g3,b3,d4]",
G: "[[g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,d#4] ~ [g#3,c#4,d#4] ~ [g#3,c#4,d#4] ~ [g#3,c#4,d#4] ~ [g#3,c#4,f#4] ~ [g#3,c#4,f#4] ~ [g#3,c#4,f#4] ~ [g#3,c#4,f#4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4]@2, [c#2,c#3]@7 b2]/2", // C#m G#sus4 C#sus4 C#m C#
H: "[[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,d#4] ~ [a3,c#4,d#4] ~ [a3,c#4,d#4] ~ [a3,c#4,d#4] ~ [a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [a3,c#4,f#4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2, a2@7 g#2]/2", // A D#m7b5 F#m A
I: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,d#4] ~ [a3,c#4,d#4] ~ [a3,c#4,d#4] ~ [a3,c#4,d#4] ~, f#2", // A D#m7b5
J: "[g#3,c#4,d#4] ~ [g#3,c#4,d#4] ~ [g#3,c#4,d#4] ~ [g#3,c#4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~, g#2", // G#sus4 G#
K: "c#4@2 c4 c#4, [f#2,f#3,a3]", L: "c#4 c4, [f#2,f#3,a3]", M: "[f3,a3,c4] [g3,b3,d4], f2",
N: "[e2,g3,b3]@2 [a2,a3] [g2,b3], e4, ~ c4", O: "[e2,g3,b3,e4] [a2,a3,c4,e4]", P: "b3 a3, [c#3,g3,e4]",
Q: "[d3,g3,a3,d4]@7 f#3 ~@8", R: "[e4@8 d4@4 c#4@4 e4@7 ~ d4@4 c#4@4, e2@31 ~, [g3,b3] [g3,a#3]]/2",
S: "[e2,g3,b3,d4]", T: "[~ [b1,b2]@15]/8",
})).s("gm_string_ensemble_1").gain(0.4)
// drums · kick
const kick = s("bd").struct(`<
~@14 A B@5 C D E D@3 E@2 F B D E D E D E G D E D E D E D H D@3 E D@2 I D E D E D G D@2 J E K L M N@2 D E N E O D E I P
E Q D@2 R S ~@8
>`.pickRestart({
A: "x ~@6 x", B: "x", C: "x ~@6 x ~@8", D: "x!2", E: "x ~@3 x ~@2 x", F: "x ~@7 x ~ x ~@2 x!2 ~",
G: "x ~@2 x!2 ~@2 x", H: "~@2 x!6 ~@8", I: "x ~@2 x!2 ~@3", J: "x!2 ~ x!2 ~@3", K: "x!2 ~@2 x ~@2 x",
L: "x!2 ~@2 x!2 ~ x", M: "~ x!7 ~@8", N: "x!2 ~@2 x ~@3", O: "x ~@3 x!2 ~ x", P: "x!2 ~@2 x ~ x ~",
Q: "x ~@3 x!2 ~@2", R: "x ~@4 x!3 ~@5 x!3", S: "~ x",
})).gain(0.44)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@16 A ~ A ~ B ~@3 A ~@19 C ~ A ~@16 D E ~@13 F ~ G ~@9>".pickRestart({
A: "~@7 x", B: "~@2 x!5 ~@9", C: "x!2 ~@14", D: "~ x ~@14", E: "x", F: "~@3 x ~@4", G: "~ x ~ x",
})).gain(0.24)
// drums · snare
const snare = s("sd").struct("<~@20 A B@8 ~ B@14 A B@15 C B@3 D B@10 E B@4 F ~@9>".pickRestart({
A: "~@6 x!2 ~@8", B: "~ x ~ x", C: "~ x ~@2", D: "~@3 x!5 ~@8", E: "~@2 x ~@2 x ~@2", F: "~@7 x ~@6 x!2",
})).gain(0.44)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@20 A ~@23 B ~@19 C D ~@14 E ~@9>".pickRestart({
A: "~@2 x!4 ~@10", B: "x!6 ~@10", C: "x!3 ~@13", D: "~@3 x ~@4", E: "~@4 x!3 ~@5 x!2 ~@2",
})).gain(0.15)
// drums · low tom
const low_tom = s("lt").struct("<~@2 A ~@17 B ~@8 C ~@14 B ~@19 B ~@15 D ~@9>".pickRestart({
A: "~@11 x ~@2 x ~", B: "~@7 x ~@8", C: "x", D: "~@12 x!4",
})).gain(0.49)
// drums · mid tom
const mid_tom = s("mt").struct("<~@2 A ~@17 B ~@8 C ~@14 D ~@15 E ~@3 D ~@15 F ~@9>".pickRestart({
A: "~ x", B: "~@5 x!2 ~@9", C: "x", D: "~@7 x ~@8", E: "~@12 x!4", F: "~@5 x!3 ~@8",
})).gain(0.39)
// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@20 [~@2 x!3 ~@11] ~@59 [~ x ~@2] ~@9>").gain(0.15)
// drums · open hat
const open_hat = s("oh").struct(`<
~@21 A B A B A@4 ~ A B@5 C B@6 D ~ A E A B A B F A B A B@2 A B G H ~@4 A B@5 D ~@18
>`.pickRestart({
A: "~ x!7", B: "x!8", C: "x!4 ~@2 x!2", D: "~@2 x!2 ~@2 x!2", E: "x!7 ~", F: "~@2 x ~@3 x!2", G: "~@2 x!6",
H: "x!5 ~@3",
})).gain(0.34)
// … 32 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.