0:00/0:00
// Under My Thumb — The Rolling Stones
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 75 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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 · electric bass finger · "Bass"
const bass = note(`<
~@2 A@3 B C@2 D@3 E F G H@3 I J@2 K L@4 M N O P Q R@2 S@2 T U@2 V W@2 X Y Z@2 AA AB@4 AC AD AE@2 AF AG AH@3 AI@3 AJ@3
AK@2 AL AM@2 AN@4 AO ~
>`.pickRestart({
A: "[~@6 e2@4 d2@4 b1@5 e2@4 ~@4 e2@9 ~@5 d2@4 c2@4 a1@4 d2@5 ~@4 d2@8 ~@5 c2@4 a#1@5 g1@5 c2@4 ~@3]/3",
B: "~ c2@9 ~@4 c2@4 a#1@4 ~ g1@4 c2@4 ~", C: "[~@4 c2@9 ~@4 e2@4 d2@4 b1@5 e2@4 ~@4 e2@9 ~@5 d2@5 c2@3 a1@4]/2",
D: "[~ d2@5 ~@4 d2@8 ~@5 c2@4 a#1@4 g1@5 c2@4 ~@5 c2@9 ~@4 c2@4 a#1@4 g1@5 c2@4 ~@5 c2@9 ~@4 e2@3]/3",
E: "~ d2@4 b1@5 e2@4 ~@4 e2@9 ~@5", F: "d2@4 c2@4 a1@4 d2@5 ~@4 d2@8 ~@3", G: "~@2 c2@4 a#1@5 g1@5 c2@4 ~@4 c2@8",
H: "[~@5 c2@4 a#1@4 ~ g1@4 c2@4 ~@5 c2@9 ~@4 e2@4 d2@4 b1@5 e2@4 ~@4 e2@9 ~@5 d2@5 c2@3 a1@5 d2@5 ~@3]/3",
I: "~ d2@8 ~@5 c2@4 a#1@4 g1@5 c2@4 ~", J: "[~@4 c2@9 ~@4 c2@4 a#1@4 g1@5 c2@4 ~@5 c2@9 ~@4 g1@11 ~]/2",
K: "~ g1@4 ~@17 g1@10",
L: "[~@3 g1@4 ~@14 g1@4 c2@10 ~@3 c2@6 ~@8 c2@8 a1@9 ~@4 a1@5 ~@8 a1@9 e2@11 ~@2 e2@5 ~@8 e2@7]/4",
M: "~@2 d2@9 ~@4 d2@4 c2@10 ~@3", N: "c2@4 ~ g1@10 ~@3 g1@4 ~@10", O: "~@7 g1@11 ~@3 g1@5 ~@6",
P: "~@11 g1@10 ~@2 g1@4 ~@5", Q: "~@13 g1@10 ~@3 g1@4 ~@2",
R: "[~@16 e2@4 d2@4 b1@5 ~ e2@4 ~@4 e2@9 ~@4 d2@5 c2@3 a1@5]/2",
S: "[d2@5 ~@4 d2@8 ~@5 c2@4 a#1@4 g1@5 c2@4 ~@5 c2@9 ~@4 c2@4 a#1@3]/2", T: "~ g1@5 c2@4 ~@5 c2@9 ~@4 e2@4",
U: "[d2@4 b1@5 e2@4 ~@4 e2@9 ~@5 d2@4 c2@4 a1@5 d2@5 ~@3 d2@8 ~@4]/2", V: "~@2 c2@4 a#1@4 g1@5 c2@4 ~@4 c2@9",
W: "[~@5 c2@4 a#1@4 g1@5 c2@4 ~@4 c2@9 ~@4 g1@11 ~@2 g1@4 ~@8]/2", X: "~@10 g1@11 ~@2 g1@4 ~@5",
Y: "~@8 g1@5 c2@10 ~@3 c2@6", Z: "[~@7 c2@9 a1@9 ~@4 a1@5 ~@8 a1@8 e2@11 ~@3]/2", AA: "e2@5 ~@8 e2@9 d2@9 ~",
AB: "[~@3 d2@4 c2@10 ~@3 c2@4 ~ g1@10 ~@3 g1@4 ~@17 g1@11 ~@2 g1@5 ~@17 g1@10 ~@3 g1@3 ~@18]/4",
AC: "~ g1@10 ~@3 g1@4 ~@14", AD: "~@4 e2@4 d2@4 b1@5 e2@4 ~@4 e2@7",
AE: "[~@7 d2@4 c2@4 a1@5 d2@5 ~@4 d2@8 ~@5 c2@4 a#1@4 g1@5 c2@4 ~@5]/2", AF: "c2@9 ~@4 c2@4 a#1@4 g1@5 c2@3 ~@3",
AG: "~@2 c2@9 ~@5 e2@3 d2@4 ~ b1@5 e2@3",
AH: "[~@5 e2@8 ~@6 d2@4 c2@4 a1@4 d2@5 ~@4 d2@8 ~@5 c2@4 a#1@4 ~ g1@4 c2@4 ~@5 c2@9 ~@4 c2@4 a#1@4]/3",
AI: "[~ g1@4 c2@4 ~@5 c2@9 ~@4 g1@11 ~@2 g1@4 ~@18 g1@10 ~@3 g1@4 ~@13 g1@4]/3",
AJ: "[~ c2@10 ~@2 c2@6 ~@8 c2@8 a1@9 ~@5 a1@5 ~@8 a1@8 e2@11 ~@2 e2@5 ~@8]/3",
AK: "[~ e2@8 d2@9 ~@4 d2@5 c2@10 ~@3 c2@4 g1@11 ~@2 g1@4 ~@3]/2", AL: "~@15 g1@11 ~@2 g1@4",
AM: "[~@18 g1@10 ~@3 g1@3 ~@19 g1@10 ~]/2",
AN: "[~@2 g1@4 ~@18 g1@11 ~@2 g1@4 ~@17 g1@11 ~@3 g1@5 ~@17 g1@10 ~@2 g1@4 ~@18]/4", AO: "~ g1@31",
})).s("gm_electric_bass_finger").gain(0.36)
// chords · pizzicato strings · "Pitz Strings"
const pizzicato_strings = note(`<
~@2 A B@2 C D E F@3 G@3 H I J K L@2 M N O P@2 Q R S T U V W X@3 Y@2 Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO@2
AP AQ AR@2 AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH ~
>`.pickRestart({
A: "~ e4@2 ~@3 g4@3 a4@5 b4@4 ~ e4@3 ~@6 e4@3 ~",
B: "[~@4 d4@4 f#4@4 ~ g4@4 a4@4 ~ d4@4 ~@4 d4@4 ~@5 c4@4 e4@5 f4@4 g4@4 c4@3 ~@5]/2",
C: "~ c4@4 ~@5 c4@4 e4@4 f4@5 g4@4 c4@4 ~", D: "~@4 c4@4 ~@5 e4@2 ~@2 g4@4 a4@5 b4@4 e4@2",
E: "~@7 e4@3 ~@6 d4@4 f#4@4 g4@4 ~ a4@3",
F: "[~ d4@3 ~@6 d4@3 ~@6 c4@4 e4@4 f4@4 g4@4 ~ c4@3 ~@5 c4@3 ~@6 c4@4 e4@5 f4@4 g4@4 ~ c4@4 ~@4 c4@4 ~@5 e4@2 ~@3 g4@3]/3",
G: "[a4@5 b4@5 e4@3 ~@6 e4@3 ~@5 d4@4 f#4@4 ~ g4@4 a4@4 ~ d4@4 ~@4 d4@3 ~@6 c4@4 e4@5 f4@4 g4@4 c4@3 ~@6 c4@4 ~@4]/3",
H: "~ c4@4 e4@4 f4@4 g4@4 ~ c4@4 ~@5 c4@4 ~", I: "~@4 e4@2 ~@2 g4@4 a4@5 b4@4 e4@3 ~@6 e4@2",
J: "~@7 d4@4 f#4@4 g4@4 ~ a4@4 d4@3 ~@5", K: "~ d4@3 ~@6 c4@4 e4@4 f4@4 g4@4 ~ c4@3 ~@2",
L: "[~@3 c4@3 ~@6 c4@4 e4@5 f4@4 g4@4 ~ c4@4 ~@4 c4@4 ~@5 e4@2 ~@3 [g4,d5]@2 ~@10]/2", // G5
M: "~ [g4,d5]@2 ~@20 d5@2 ~@7, ~@22 g4@3 ~@7", N: "~@4 [g4,d5]@2 ~@19 [c4,g4]@4 ~@3",
O: "~@6 [c4,g4]@3 ~@19 [a3,e4]@2 ~@2", P: "[~@9 [a3,e4]@2 ~@20 [e4,b4]@3 ~@10 [e4,b4]@2 ~@18]/2",
Q: "~@2 [d4,a4]@4 ~@13 [c4,g4]@3 ~@10", R: "~@5 [g4,d5]@2 ~@11 [g4,d5]@2 ~@7 g4@2 ~@3, ~@27 d5 ~@4",
S: "~@8 g4@2 ~@11 g4@2 ~@7 g4@2, ~@8 d5 ~@12 d5 ~@8 d5 ~", T: "~@11 [g4,d5] ~@12 [g4,d5] ~@7",
U: "[g4,d5] ~@12 g4@2 ~@12 [g4,d5] ~@4, ~@13 d5 ~@18", V: "~@3 [g4,d5] ~@12 g4@4 a4@5 b4@4 ~ e4@2",
W: "~@7 e4@3 ~@5 d4@4 f#4@4 g4@5 a4@4",
X: "[d4@4 ~@5 d4@4 ~@5 c4@4 e4@4 f4@4 ~ g4@4 c4@3 ~@6 c4@3 ~@6 c4@3 e4@5 f4@4 g4@4 ~ c4@4 ~@5 c4@4 ~@5 e4@2 ~@2 g4@4]/3",
Y: "[a4@4 b4@4 ~ e4@3 ~@6 e4@3 ~@5 d4@5 f#4@4 g4@4 a4@4 ~ d4@3 ~@6 d4@3 ~@5 c4@3]/2",
Z: "~@2 e4@4 f4@4 g4@4 ~ c4@3 ~@5 c4@3 ~@6", AA: "c4@4 e4@4 f4@5 g4@4 ~ c4@4 ~@4 c4@4 ~@2",
AB: "~@3 e4@2 ~@2 [g4,d5]@2 ~@11 [g4,d5]@2 ~@10", AC: "~@10 [g4,d5]@2 ~@11 [g4,d5]@2 ~@7",
AD: "~@13 [c4,g4]@4 ~@9 [c4,g4]@3 ~@3", AE: "~@16 [a3,e4]@2 ~@11 [a3,e4]@2 ~", AF: "~@19 [e4,b4]@3 ~@10",
AG: "[e4,b4] ~@10 [d4,a4]@2 ~@3", AH: "~@7 [c4,g4]@3 ~@15 [g4,d5]@2 ~@5",
AI: "~@6 [g4,d5]@2 ~@6 g4@2 ~@11 g4@2 ~@3, ~@14 d5 ~@12 d5 ~@4", // G5
AJ: "~@9 d5 ~@7 g4@2 ~@11 [g4,d5] ~, ~@8 g4@2 ~@7 d5 ~@14", AK: "~@11 [g4,d5] ~@8 g4@2 ~@10, ~@20 d5 ~@11",
AL: "~ g4@2 ~@11 [g4,d5] ~@8 [g4,d5] ~@8, ~ d5 ~@30", AM: "~@4 g4@4 a4@4 ~ b4@4 e4@3 ~@6 e4@3 ~@3",
AN: "~@3 d4@4 f#4@4 g4@4 ~ a4@4 d4@4 ~@5 d4@3",
AO: "[~@6 c4@4 e4@4 f4@4 g4@4 ~ c4@3 ~@5 c4@3 ~@6 c4@4 e4@4 f4@5 g4@4 ~ c4@4 ~@2]/2",
AP: "~@2 c4@4 ~@5 e4@2 ~@3 g4@3 a4@5 b4@4 ~ e4@3", AQ: "~@6 e4@3 ~@5 d4@4 f#4@4 ~ g4@4 a4@4 ~",
AR: "[d4@3 ~@5 d4@3 ~@6 c4@4 e4@4 f4@4 ~ g4@4 c4@3 ~@6 c4@4 ~@5 c4@4 e4@4 f4@4]/2",
AS: "g4@4 ~ c4@4 ~@5 c4@4 ~@5 e4@3 ~ [g4,d5]@2 ~@3", AT: "~@4 [g4,d5] ~@10 [g4,d5]", AU: "~@11 [g4,d5]@2 ~@19",
AV: "~ [c4,g4]@4 ~@9 [c4,g4]@3 ~@15", AW: "~@4 [a3,e4]@2 ~@11 [a3,e4]@2 ~@13",
AX: "~@7 [e4,b4]@3 ~@10 [e4,b4]@2 ~@10", AY: "~@9 [d4,a4]@4 ~@14 [c4,g4]@3 ~@2",
AZ: "~@12 [g4,d5]@2 ~@11 [g4,d5]@2 ~@5", BA: "~@2 g4@2 ~@11 [g4,d5]@2 ~@11 [g4,d5] ~@3, ~@2 d5 ~@29",
BB: "~@5 g4@2 ~@11 [g4,d5] ~@12 [g4,d5], ~@5 d5 ~@26", BC: "~@8 g4@2 ~@11 g4@2 ~@9, ~@8 d5 ~@12 d5 ~@10",
BD: "~@2 [g4,d5] ~@8 [g4,d5] ~@12 d5@2 ~@6, ~@24 g4 ~@7", BE: "~@5 d5@2 ~@7 [g4,d5] ~@12 [g4,d5]@3 ~@2, ~@5 g4 ~@26",
BF: "~@8 [g4,d5] ~@7 g4@2 ~@11 g4@2 ~, ~@16 d5 ~@12 d5 ~@2", BG: "~@11 [g4,d5] ~@7 [g4,d5] ~@12", BH: "[g4,d5]",
})).s("gm_pizzicato_strings").gain(0.36)
// chords · acoustic guitar steel · "Pedal Guitar"
const acoustic_guitar_steel = note("<~@21 A@5 B C D@2 ~@11 E@4 F@5 G H I J@6 ~ K@3 L M@6 ~@5>".pickRestart({
A: "[~@21 [c5,g5]@27 ~@7 [a4,e5]@31 ~@5 [b4,e5]@29 ~@5 [a4,d5]@14 ~@4 [g4,c5]@17]/5", B: "~@3 [g4,d5]@12 ~",
C: "~ [g4,d5]@7", D: "[~@6 [g4,d5]@30 ~@5 [g4,d5]@23]/2",
E: "[~@9 [c5,g5]@27 ~@7 [a4,e5]@31 ~@5 [b4,e5]@29 ~@5 [a4,d5]@14 ~]/4", // C5 A5 E5 D5
F: "[~@3 [g4,c5]@17 ~@5 [g4,d5]@24 ~@7 [g4,d5]@30 ~@4 [g4,d5]@30 ~@5 g4@24 ~@11, ~@31 d5@6 ~@3]/5", // C5 G5
G: "~ [b4,e5]@6 ~", H: "~@3 [a4,d5]@25 ~@4", I: "~@3 [g4,c5]@13",
J: "[~@9 [g4,c5]@26 ~@13 [b4,e5]@23 ~@7 [a4,d5]@25 ~@10 [g4,c5]@28 ~@7 [g4,c5]@26 ~@18]/6", // C5 E5 D5 C5
K: "[~@29 [c5,g5]@27 ~@7 [a4,e5]@31 ~@2]/3", L: "~@2 [b4,e5]@29 ~",
M: "[~@5 d5@14 ~@4 [g4,c5]@17 ~@5 [g4,d5]@24 ~@6 [g4,d5]@30 ~@5 g4@30 ~@4 [g4,d5]@24 ~@24, ~@4 a4@14 ~@91 d5@30 ~@53]/6", // C5 G5
})).s("gm_acoustic_guitar_steel").gain(0.36)
// drums · kick
const kick = s("bd").struct(`<
~@2 A B C D E F G H I J K L M N O D E F G P Q R S T M U O V W X Y Z AA R S AB AC AD AE AF W X Y Z AG AH AI AJ AK AD AE
AF AL AM AN AO AP AQ AI AJ AR AS AT C AU AV AW AO AP AX AY AZ ~
>`.pickRestart({
A: "~@6 x ~@12 x ~@8 x ~@3", B: "~@9 x ~@12 x ~@7 x ~", C: "~@12 x ~@12 x ~@6", D: "~ x ~@12 x ~@12 x ~@4",
E: "~@4 x ~@12 x ~@12 x ~", F: "~@7 x ~@12 x ~@11", G: "~ x ~@8 x ~@12 x ~@8", H: "~@4 x ~@8 x ~@12 x ~@5",
I: "~@7 x ~@8 x ~@12 x ~@2", J: "~@10 x ~@8 x ~@12", K: "x ~@12 x ~@7 x ~@10", L: "~@3 x ~@12 x ~@7 x ~@7",
M: "~@5 x ~@12 x ~@8 x ~@4", N: "~@8 x ~@12 x ~@8 x ~", O: "~@11 x ~@12 x ~@7", P: "~@2 x ~@3 x ~@6 x ~@2",
Q: "~@7 x ~@7 x ~@12 x ~@3", R: "~@9 x ~@8 x ~@12 x", S: "~@12 x ~@8 x ~@10", T: "~@2 x ~@12 x ~@8 x ~@7",
U: "~@8 x ~@12 x ~@7 x ~@2", V: "x ~@13 x ~@12 x ~@4", W: "~@3 x ~@12 x ~@12 x ~@2", X: "~@6 x ~@12 x ~@12",
Y: "x ~@8 x ~@12 x ~@9", Z: "~@3 x ~@8 x ~@12 x ~@6", AA: "~@6 x ~@8 x ~@12 x ~@3", AB: "~@2 x ~@12 x ~@7 x ~@8",
AC: "~@5 x ~@12 x ~@7 x ~@5", AD: "~@7 x ~@12 x ~@8 x ~@2", AE: "~@10 x ~@12 x ~@8", AF: "x ~@12 x ~@12 x ~@5",
AG: "~@6 x ~@7 x ~@12 x ~@4", AH: "~@9 x ~@7 x ~@12 x ~", AI: "~@11 x ~@8 x ~@11", AJ: "~ x ~@12 x ~@8 x ~@8",
AK: "~@4 x ~@12 x ~@8 x ~@5", AL: "~@2 x ~@13 x ~@12 x ~@2", AM: "~@5 x ~@12 x ~@13", AN: "x ~@7 x ~@12 x ~@10",
AO: "~@2 x ~@8 x ~@12 x ~@7", AP: "~@5 x ~@8 x ~@12 x ~@4", AQ: "~@8 x ~@8 x ~@12 x ~", AR: "~@4 x ~@12 x ~@7 x ~@6",
AS: "~@7 x ~@12 x ~@7 x ~@3", AT: "~@9 x ~@12 x ~@8 x", AU: "~@2 x ~@12 x ~@12 x ~@3", AV: "~@5 x ~@12 x ~@12 x",
AW: "~@8 x ~@12 x ~@10", AX: "~@4 x ~@3 x ~@6 x", AY: "~@11 x ~@7 x ~@12", AZ: "x",
})).gain(0.51)
// drums · snare
const snare = s("sd").struct(`<
~@2 A B C D E F A B C G E F H I J G E K H I J L M K H N O L M K P N O L M Q P N O R S Q T N U R S V T N U W X V T Y Z
W X V AA Y Z W AB AC AA Y Z AD AB ~@2
>`.pickRestart({
A: "~@7 x ~@8", B: "x ~@16 x ~@14", C: "~@3 x ~@16 x ~@11", D: "~@6 x ~@16 x ~@8", E: "~@4 x ~@8 x ~@2",
F: "~@11 x ~@17 x ~@2", G: "~@5 x ~@17 x ~@8", H: "~@14 x ~@16 x", I: "~@17 x ~@14", J: "~ x ~@8 x ~@5",
K: "~@11 x ~@16 x ~@3", L: "~@5 x ~@16 x ~@9", M: "~@8 x ~@16 x ~@6", N: "~ x", O: "~@2 x ~@16 x ~@12",
P: "~@13 x ~@17 x", Q: "~@5 x ~@8 x ~", R: "~@2 x ~@8 x ~@4", S: "~@7 x ~@17 x ~@6", T: "~@13 x ~@16 x ~",
U: "~ x ~@17 x ~@12", V: "~@10 x ~@16 x ~@4", W: "~@4 x ~@16 x ~@10", X: "~@7 x ~@16 x ~@7", Y: "~@15 x ~@16",
Z: "~ x ~@16 x ~@13", AA: "~@6 x ~@8 x", AB: "~@3 x ~@8 x ~@3", AC: "~@9 x ~@17 x ~@4", AD: "~@3 x ~@17 x ~@10",
})).gain(0.51)
// drums · hihat
const hihat = s("hh").struct(`<
A B C D E F D G F H G I H G J K L J K M J K N O P Q O R Q O R Q S R T S R T S U T V W X Y W Z Y W Z Y AA Z AB AA AC AB
AA AD AE AF AC AE AF AG AE AH AG AI AJ AG AI AH AK ~
>`.pickRestart({
A: "x ~@16 x ~@14", B: "~@3 x ~@7 x ~@8 x ~@11", C: "~@6 x ~@8 x ~@7 x ~@8", D: "x ~@8 x ~@7 x ~@8 x ~@5",
E: "~@3 x ~@8 x ~@7 x ~@8 x ~@2", F: "~@6 x ~@7 x ~@8 x ~@8", G: "~@3 x ~@7 x ~@8 x ~@8 x ~@2",
H: "x ~@7 x ~@8 x ~@8 x ~@5", I: "~@5 x ~@8 x ~@8 x ~@8", J: "~@5 x ~@8 x ~@8 x ~@7 x", K: "~@8 x ~@8 x ~@8 x ~@5",
L: "~@2 x ~@8 x ~@8 x ~@8 x ~@2", M: "~@2 x ~@8 x ~@16 x ~@3", N: "~@2 x ~@8 x ~@8 x ~@7 x ~@3",
O: "~@5 x ~@8 x ~@7 x ~@8 x", P: "~@8 x ~@8 x ~@7 x ~@6", Q: "~@2 x ~@8 x ~@7 x ~@8 x ~@3",
R: "~@8 x ~@7 x ~@8 x ~@6", S: "~@5 x ~@7 x ~@8 x ~@8 x", T: "~@2 x ~@7 x ~@8 x ~@8 x ~@3", U: "~@16 x ~@8 x ~@6",
V: "~@4 x ~@8 x ~@8 x ~@8 x", W: "~@7 x ~@8 x ~@8 x ~@6", X: "~ x ~@8 x ~@8 x ~@8 x ~@3",
Y: "~@4 x ~@8 x ~@8 x ~@7 x ~", Z: "~ x ~@8 x ~@8 x ~@7 x ~@4", AA: "~@7 x ~@8 x ~@7 x ~@7",
AB: "~@4 x ~@8 x ~@7 x ~@8 x ~", AC: "~ x ~@8 x ~@7 x ~@8 x ~@4", AD: "~ x ~@8 x ~@7 x ~@13",
AE: "~@4 x ~@7 x ~@8 x ~@8 x ~", AF: "~@7 x ~@7 x ~@8 x ~@7", AG: "~ x ~@7 x ~@8 x ~@8 x ~@4",
AH: "~@6 x ~@8 x ~@8 x ~@7", AI: "~@3 x ~@8 x ~@8 x ~@8 x ~", AJ: "~@6 x ~@8 x ~@16", AK: "x",
})).gain(0.51)
// drums · open hat
const open_hat = s("oh").struct(`<
~@4 A ~ B ~ C ~ D ~ E ~@2 F ~ G ~ H ~ I ~ J ~@2 K ~ L ~ M ~ N ~ D ~ O ~@2 P ~ Q ~ H ~ R ~ S ~@2 T ~ U ~ V ~ W ~ X ~ Y
~@2 Z ~ AA ~ AB ~ C ~ AC ~@3
>`.pickRestart({
A: "~@7 x ~@24", B: "~@13 x ~@18", C: "~@19 x ~@12", D: "~@3 x", E: "~@15 x", F: "~ x ~@6", G: "~@5 x ~@10",
H: "~@15 x ~@16", I: "~@21 x ~@10", J: "~@27 x ~@4", K: "~ x ~@30", L: "~@3 x ~@12", M: "~@3 x ~@4", N: "~@9 x ~@6",
O: "~@29 x ~@2", P: "~@3 x ~@28", Q: "~@9 x ~@22", R: "~@5 x ~@2", S: "~@13 x ~@2", T: "x", U: "~@5 x ~@26",
V: "~@11 x ~@20", W: "~@17 x ~@14", X: "~@23 x ~@8", Y: "~@7 x", Z: "~ x ~@14", AA: "~ x ~@2", AB: "~@7 x ~@8",
AC: "~@25 x ~@6",
})).gain(0.31)
// drums · crash
const crash = s("cr").struct("<~@19 A ~@6 B ~@12 C ~@5 D ~@12 E ~@6 F ~@3 G ~@3 H ~>".pickRestart({
A: "~@5 x ~@2", B: "~@5 x ~@26", C: "~@7 x ~@24", D: "~@25 x ~@6", E: "~@27 x ~@4", F: "~@3 x ~@4", G: "~@3 x",
H: "x",
})).gain(0.51)
// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
~@2 A B C D B E D F E D F E G F H G I H G I H J I K J L K M N K M N K O N P O Q P R Q P R Q S R T S U T V U W V U W X
Y Z X Y Z AA AB AC AA AB AC AA AD AC ~@2
>`.pickRestart({
A: "~@10 x ~@8 x ~@8 x ~@3", B: "~@4 x ~@8 x ~@8 x ~@7 x ~", C: "~@7 x ~@8 x ~@8 x ~@6",
D: "~ x ~@8 x ~@8 x ~@7 x ~@4", E: "~@7 x ~@8 x ~@7 x ~@7", F: "~@4 x ~@8 x ~@7 x ~@8 x ~",
G: "~ x ~@8 x ~@7 x ~@8 x ~@4", H: "~@7 x ~@7 x ~@8 x ~@7", I: "~@4 x ~@7 x ~@8 x ~@8 x ~",
J: "~ x ~@7 x ~@8 x ~@8 x ~@4", K: "~@6 x ~@8 x ~@8 x ~@7", L: "~@3 x ~@8 x ~@8 x ~@8 x ~",
M: "x ~@8 x ~@8 x ~@8 x ~@4", N: "~@3 x ~@8 x ~@8 x ~@7 x ~@2", O: "x ~@8 x ~@8 x ~@7 x ~@5",
P: "~@6 x ~@8 x ~@7 x ~@8", Q: "~@3 x ~@8 x ~@7 x ~@8 x ~@2", R: "x ~@8 x ~@7 x ~@8 x ~@5",
S: "~@6 x ~@7 x ~@8 x ~@8", T: "~@3 x ~@7 x ~@8 x ~@8 x ~@2", U: "x ~@7 x ~@8 x ~@8 x ~@5",
V: "~@5 x ~@8 x ~@8 x ~@8", W: "~@2 x ~@8 x ~@8 x ~@8 x ~@2", X: "~@5 x ~@8 x ~@8 x ~@7 x",
Y: "~@8 x ~@8 x ~@8 x ~@5", Z: "~@2 x ~@8 x ~@8 x ~@7 x ~@3", AA: "~@5 x ~@8 x ~@7 x ~@8 x",
AB: "~@8 x ~@8 x ~@7 x ~@6", AC: "~@2 x ~@8 x ~@7 x ~@8 x ~@3", AD: "~@8 x ~@7 x ~@8 x ~@6",
})).gain(1.82)
// drums · shaker
const shaker = s("sh").struct("<~@19 A ~ B ~@4 C ~@12 D ~ E ~@3 B ~@12 F ~@2 G ~@3 H ~@3 I ~@3 J ~>".pickRestart({
A: "~@5 x ~@2", B: "~@25 x ~@6", C: "~@5 x ~@26", D: "~@7 x ~@24", E: "~@13 x ~@18", F: "~@27 x ~@4", G: "~ x ~@30",
H: "~@3 x ~@4", I: "~@3 x", J: "x ~@4 x ~@26",
})).gain(0.51)
stack(bass, pizzicato_strings, acoustic_guitar_steel, kick, snare, hihat, open_hat, crash, cabasa, shaker)
More by The Rolling Stones
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.