0:00/0:00
// Overprotected — Britney Spears
// 97 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 78 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(97/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 · acoustic bass
const bass = note(`<
~@2 A B C D E F C D G H I@3 J C K C L M N C O P Q R S ~ T U V W@3 J C X C Y M Z AA AB ~@11 AC C AD C L M AE AF AG AH
AI L M AJ B C AD AK L AL AM AN ~
>`.pickRestart({
A: "~@19 g1@5 ~ g1@2 ~@5", B: "~@3 g1@5 ~ g1@5 ~ g1@3 ~@2 f1@5 f1@4 ~@3",
C: "~@3 g1@5 ~ g1@5 ~ g1@3 ~ c2@5 ~ c2@4 ~@3", D: "~@3 c2@6 g1@2 ~ bb1 c2@5 ~ f1@5 ~ f1@4 ~@3",
E: "~@3 f1 g1@4 ~ g1@5 ~ g1@3 ~@2 c2@5 c2@4 ~@3", F: "~@3 c2@5 ~ c2@5 ~ c2@3 ~@2 f1@5 f1@4 ~@3",
G: "~@3 g1@5 ~ g1@5 ~ g1@3 ~ c2@5 ~ c2@2 ~@5", H: "~@3 c2@5 ~ c2@5 ~ c2@3 ~@2 f1@11 ~",
I: "[~ f1 ~ bb1@8 ~@2 bb1@5 ~ c2@5 ~ c2 ~ c2@2 bb1@2 g1@4 c2@15 ~ f1@4 ~@2 f1@4 ~@2 f1@3 ~ f1 bb1@5 ~@6 b1 ~@16]/3",
J: "~@15 g1@3 ~@2 f1@5 f1@4 ~@3", K: "~@3 c2@6 g1@2 bb1@2 c2@5 ~ f1@5 ~ f1@4 ~@3",
L: "~@3 c2@5 ~ c2@5 ~ c2@3 ~@2 ab1@5 ab1@4 ~@3", M: "~@3 bb1@5 ~ bb1@5 ~ bb1@3 ~ eb2@5 ~ eb2@4 ~@3",
N: "~@3 ab1@6 eb2@2 ~ g1 g1@4 ~@2 f1@5 ~ f1@4 ~@3", O: "~@3 c2@2 ~@24 b1 ~@2", P: "~@15 g1@3 ~@2 c2@5 c2@4 ~@3",
Q: "~@3 c2@5 ~ c2@5 ~ c2@3 ~ f1@5 ~ f1@4 ~@3", R: "~@3 g1@6 d2@2 f1@2 g1@6 c2@5 ~ c2@2 ~@5", S: "~@3 c2@2 ~@27",
T: "~@15 c2@3 ~@2 f1@5 f1@4 ~@3", U: "~@4 g1@4 ~ g1@5 ~ g1@3 ~ c2@5 ~ c2 ~ c2@5",
V: "~@3 c2@5 ~ c2 ~ bb1@4 bb1@3 ~@2 f1@11 ~",
W: "[~ f1 ~ f1 bb1@7 ~@2 bb1@5 ~ c2@5 ~ c2 ~@2 c2 bb1@2 g1@4 c2@15 ~ f1@4 ~@2 f1@4 ~@2 f1@3 ~@2 bb1@4 ~@6 b1 ~@17]/3",
X: "~@3 c2@6 g1@2 bb1@2 c2@6 ~ f1@5 f1@4 ~@3", Y: "~@3 c2@2 g2@2 eb2@2 c2@5 ~ c2@3 ~@2 ab1@5 ab1@4 ~@3",
Z: "~@3 ab1@6 eb2 ~ f1@2 g1@4 ~@2 f1@5 ~ f1@4 ~@3", AA: "~@3 g1@5 ~ g1@2 c2@3 ~ c2@3 ~ c2@5 ~ c2@4 ~@3",
AB: "~@3 c2@5 ~ c2@5 ~ c2@2 ~@3 f1@4 ~@8", AC: "~@9 c2@5 ~ c2@2 ~@3 f1@5 f1@4 ~@3",
AD: "~@3 c2@6 g1@2 bb1@2 c2@4 ~@2 f1@5 ~ f1@4 ~@3", AE: "~@3 ab1@6 eb2@2 ~ g1 g1@5 ~ f1@5 ~ f1 ~ f1@5",
AF: "~@3 g1@5 ~ g1@5 ~ g1@2 ~@3 f1@5 f1@4 ~@3", AG: "~@3 g1@5 ~ g1@5 ~ g1 c2@3 c2@5 ~ c2@4 ~@3",
AH: "~@3 c2@6 g1@2 bb1@2 c2@3 f1@3 f1@5 ~ f1@4 ~@3", AI: "~@3 f1 g1@4 ~ g1@5 ~ g1@3 ~ c2@5 ~ c2@4 ~@3",
AJ: "~@3 ab1@6 eb2 ~ f1 ~ g1@4 ~@2 f1@5 ~ f1@2 ~@5", AK: "~@3 g1@5 ~ g1@5 ~ g1@2 ~@2 c2@5 ~ c2@4 ~@3",
AL: "~@3 bb1@5 ~ bb1@5 ~ bb1@2 ~@2 eb2@5 ~ eb2@4 ~@3", AM: "~@3 ab1@5 ~ eb2@2 gb1 ~ g1@5 ~ f1@5 ~ f1@4 ~@3",
AN: "~@3 g1@5 ~ g1@5 ~ g1@2 ~@3 c2@3 ~@9",
})).s("gm_acoustic_bass").gain(0.32).pan(0.6)
// bass · acoustic bass · soft notes
const bass_soft = note("<~@14 A ~@8 B ~@3 C D ~@5 A ~@11 E F ~@2 G H I J K ~@23>".pickRestart({
A: "~@14 [g1,d2] ~@17", B: "~@13 [f1,ab1] c1 ~@14 [g1,d2] ~@2", C: "~@13 [f1,ab1] c1 ~@17",
D: "~ [g1,d2] b1@2 ~@14 [c2,eb2] ~@13", E: "~@18 [g1,c2,eb2] ~@13", F: "~@18 [c1,f1,ab1] ~@13",
G: "~@18 [c2,eb2] ~@13, ~@18 g1@3 ~@11", H: "~@18 [eb1,ab1,c2] ~@13",
I: "~ [bb1,d2] f1 ~@15 [eb2,g2] ~@12 [eb1,ab1,c2], ~@9 bb1 ~@6", // Bb Eb Ab
J: "~@10 [d1,g1,c2] ~@7 [c2,eb2] ~@11 [g1,b1,d2] ~, ~@9 g1 ~@6", K: "~@9 [c2,eb2] g1 ~@21",
})).s("gm_acoustic_bass").gain(0.13).pan(0.6)
// chords · pad warm
const pad_warm = note("<~@2 A B@7 C@2 ~@11 D@3 E@5 F@4 G@8 H@4 I@8 J@7 K@7 L@8 ~>".pickRestart({
A: "~@21 d4 ~@3 d4 ~@6",
B: "[~@3 d4 ~@5 d4 ~@5 d4 ~ d4 ~@2 c4@14 [d4,g4]@16 ~ [c4,eb4]@32 [c4,f4]@17 [d4,g4]@15 c4@16 c4@6 c4@6 c4@2 c4 ~@2 c4@15 [d4,g4]@16 [c4,eb4]@31 [c4,f4]@14, ~@19 f4@15 ~@81 eb4@30 ~@2 f4@15 ~@62]/7", // G5 Cm F5 G5 Cm F5
C: "[~@3 [d4,g4]@16 c4@6 c4@10 c4@6 c4@6 c4@2 c4 ~@14, ~@19 eb4@31 ~@14]/2", // G5
D: "[~@14 c4 c4@2 c4@2 ~ [c4,f4]@9 ~ d4@5 d4@6 d4@6 d4@2 d4 ~ [c4,eb4] [c4,eb4]@31 [c4,f4]@13, ~@14 f4@4 ~@11 g4@21 ~@46]/3", // F5 Cm F5
E: "[~@3 [d4,g4]@16 c4@6 c4@10 c4@6 c4@5 c4 c4@2 c4@65 c4@2 f4@15 [d4,g4]@15 c4@7 c4@7, ~@19 eb4@27 f4@5 ~@63 f4 ~ c4@30 eb4@14]/5", // G5
F: "[~@3 c4@6 ~@2 d4@4 d4@2 d4 ~ [c4,f4]@109, ~@9 c4@10 ~@109, ~@11 f4@8 ~@109]/4", G: "[~@19 [c4,f4]@237]/8",
H: "[~@18 c4@2 c4@95 [c4,eb4]@13, ~@5 f4@27]/4", // Cm
I: "[~@3 c4@6 c4@6 c4@2 c4@3 c4@95 c4@16 c4@6 c4@6 c4@2 c4@111, ~@5 f4@59, ~@115 eb4@31 ~@110]/8",
J: "[~@17 c4@207]/7", K: "[~@2 d4 d4@6 d4@6 d4@2 [c4,f4]@207, ~@2 g4@15 d4 ~@206]/7",
L: "[~@2 d4 d4@6 d4@6 d4@2 d4 f4 ~@207 d4 d4@6 d4@6 d4@2 eb4@2 ~@13, ~@2 g4@16 c4@225 ~@13, ~@226 g4@15 ~@15]/8",
})).s("gm_pad_warm").gain(0.11).pan(0.9)
// chords · piano
const piano = note(`<
A B ~ C@3 D@4 E F G H I J K@5 L@3 M@2 N@2 O@2 P Q R S T@7 U@6 V@4 W@6 X@5 Y@4 Z@8 AA@2 AB@2
>`.pickRestart({
A: "[eb4,g4]@7 c4@5 ~@2 [b3,d4]@17 ~, c4 ~@7", B: "~@3 g3@7 ~@22",
C: "[~@3 c3@3 ~ c3@3 ~ c3@2 ~@4 g4@2 ~ f4@10 ~ d4@2 eb4@2 d4@10 ~@2 d4@2 eb4@2 c4@20 ~@2 c4 ~ c4@2 bb3@2 c4@2 g4@2 f4@11 ~@2, ~@16 c4@2 ~@65 eb4 ~@12]/3",
D: "[eb4@3 d4@3 ~ eb4 ~ d4@2 ~@2 c4@25 ~@3 c4 ~ c4@2 g3@2 c4@2 g4@2 f4@10 ~@2 eb4@2 d4 ~ d4@11 ~ d4@2 eb4@2 c4@20 ~@2 c4 ~ c4@2 bb3@2 c4@2 g4@2 f4@11 ~@2]/4",
E: "d4@3 d4@3 ~ eb4 ~ d4@4 ~ c4@18", F: "~@4 eb4@6 ~ g4@6 ~@2 ab4@4 g4 ~@2 g4@3 f4@3",
G: "~ f4@14 ~@2 eb4@2 g4@4 f4 ~ f4@3 ~ eb4@3", H: "~ g4@4 f4@3 ~ eb4@6 f4@2 eb4@2 ab4@4 g4 ~ g4@4 f4@3",
I: "~ f4@13 ~@2 eb4@2 f4@2 g4@4 eb4@2 f4@2 g4@4", J: "eb4@2 f4@2 g4@4 ab4@2 g4@3 f4@14 ~ c4 ~ c4 ~",
K: "[c4@2 d4 ~ d4@5 d4@2 ~@2 eb4@3 ~ eb4@41 ~ c4 ~ c4 ~ c4@2 d4 ~ d4@4 c4@2 d4@4 eb4@3 ~ eb4@40 ~@2 eb4@4 f4@3 ~ f4@3 ~ f4 ~ f4@2 ~@2 g4@2 ~@2 g4@13 ~ f4, ~@13 d4 ~@127 f4 ~@18]/5",
L: "[~@2 g4@2 ab4@3 g4@2 f4@4 ~ eb4@5 f4@4 ~@2 g4@3 f4@9 ~@2 eb4@2 d4@4 c4@5 ~@5 d4@2 eb4@15 ~ c4 ~ c4 ~ bb3@2 c4@2 g4 ~ [c4,eb4,g4]@4 ~ [c4,eb4,g4]@3 ~ [c4,eb4,g4]@4, ~@52 c4@11 ~@33, ~@9 g3@3 ~@4]/3", // Cm
M: "[~ eb4@3 d4@8 ~ d4 ~ d4@2 eb4@2 c4@20 ~@2 c4 ~ c4@2 bb3@2 c4@2 g4@2 f4@11 ~@2, d4 ~@31]/2",
N: "[d4@3 d4@3 ~ eb4@2 d4@4 ~ c4@26 ~@2 bb4@4 ab4@2 ~ f4 ~ f4@10 ~ eb4@2, ~@24 g4 ~@7]/2",
O: "[f4@2 eb4@2 f4@10 eb4 f4@3 eb4 ~ [eb4,g4]@3 ~ [eb4,g4]@2 f4@3 ~@2 eb4@7 d4@3 ~ d4@2 c4@3 bb3@4 f4@6 eb4@2 f4@5, ~@15 f4 ~@16]/2", // Eb
P: "~ eb4@2 [d4,g4]@11 ~ [eb4,g4]@2 [d4,f4]@4 [c4,eb4]@11", Q: "~@3 eb4@7 ~ g4@6 ~@3 ab4@3 g4 ~ g4@4 f4@2 ~",
R: "~ f4@16 eb4@2 g4@4 f4 ~ f4@4 eb4@3", S: "~ g4@3 ~ f4@3 ~ f4@3 ~ eb4@3 ~ eb4@2 ab4@4 g4 ~ g4@4 f4@3",
T: "[~ f4@12 ~@2 eb4@2 f4@2 g4@4 eb4@2 f4@2 g4@4 eb4@2 f4@2 g4@4 ab4@2 g4@4 f4@14 ~ c4!2 ~ c4@2 d4 ~ d4@4 ~@2 d4@3 ~ eb4@3 ~ eb4@42 c4 ~ c4 ~ c4@2 d4 ~ d4@4 c4@2 ~ d4@3 eb4@3 ~ eb4@41 ~ eb4@4 f4@3 ~ f4@2 ~@2 f4 ~ f4@4 g4@2 ~@2 g4@12 ~@2 f4, ~@77 d4 ~@146]/7",
U: "[~ g4@2 ab4@4 g4@2 f4@4 eb4@5 ~ f4@5 ~ g4@2 ~ f4@11 eb4@2 ~ d4@4 ~@37 f3 ~@4 ab3@2 ~ f3 ~@3 ab3@2 ~@2 [f3,ab3] ~@4 [f3,ab3] ~@3 [f3,ab3] ~@3 ab3 ~@2 [f3,ab3] ~@3 [f3,ab3] ~@3 ab3 ~@7 f3 ~@7 ab3@2 ~@3 f3 ~@11 ab3@2 ~@2 ab3@2 ~@2 [f3,ab3]@2 ~@2 [f3,ab3]@3 ~ f3@2 ~ f3@2 ~@2 c4@4 ~ eb4@2 ~@2 [g3,eb4]@3 c4, ~@46 c4@133 ~@8 c4@4 ~, ~@87 f3@2 ~@6 f3 ~@60 f3 ~@3 f3 ~@18 g3@2 ~@2 g3@3 ~@6]/6", // Fm Cm
V: "[[g3,eb4]@3 ~ [g3,eb4]@2 ~@2 eb4@2 ~ [g3,c4]@4 eb4@4 g3 ~@3 f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4@2 eb4 ~ eb4 ~ eb4@2 ~@13 f4!2 ~@2 f4@2 ~ f4@2 ~@2 f4@2 eb4 ~ eb4@2 g4@2 ~@16 g4@4 f4@2 eb4@4 d4@3 ~@2 d4@5 eb4 ~ eb4@6 c4, ~@7 [g3,c4]@4 eb4@2 ~@2 c4@72 c4@40 ~, ~@15 g3@2 ~@66 f3@25 ~@20]/4", // Cm C5
W: "[~@3 c4@8 eb4@6 ~@2 [ab3,bb3,f4]@3 ~ f4@3 ~ f4 ~ f4 ~ f4 ~@2 f4!2 ~ f4 ~ f4 ~ f4 ~ f4 ~ eb4 ~ eb4 ~ eb4@11 ~ eb4 ~@3 f4 ~ f4@2 ~ eb4 eb4@2 f4 ~ f4@2 eb4 ~ eb4@2 f4@2 g4@3 ~ g4@7 ~@3 f4@2 g4@8 eb4@8 ~@16 c3@2 ~@2 c3@3 ~ c3@3 ~ c3@2 ~@2 [eb4,g4]@16 [d4,f4]@9 ~ [d4,eb4,g4]@3 ~ f4@6 eb4@3 ~ [c4,eb4,g4]@4 [c4,eb4], ~@11 c4@104 c4@32 c4@36 ~@9, ~@23 [ab3,bb3]@11 ~@30 eb4@2 ~@30 eb4@2 ~@79 d4@2 ~@13]/6", // Bb7 Eb Dm Ebmaj7 Cm Absus2
X: "[g4@3 [f4,ab4]@3 ~ ab4@2 eb4@4 [d4,f4]@3 ~ c4@4 [c4,eb4,g4]@6 c4@2 c4@2 ~@2 d4 ~ [d4,f4]@4 eb4 ~ [d4,f4]@3 ~ [d4,bb4]@3 ~ [eb4,g4]@9 ~ [eb4,g4]@3 ~ [eb4,g4]@4 [f4,ab4]@3 ~ [f4,ab4]@2 [eb4,g4]@3 ~ [d4,f4]@3 ~ [c4,eb4]@4 [eb4,g4]@5 ~ eb4@4 f4@2 ~@2 f4@3 ~ f4 ~ f4@4 g4@2 ~@2 g4 ~ g4@3 f4 ~@2 eb4@4 ~@2 f4@2 g4@2 ab4@4 g4@2 f4@5 eb4@5 f4@6 g4@3 f4@4, ~@31 c4@50 ~@4 c4@75, ~@125 bb3@6 ~@29]/5", // Fm Dm Cm Dm Gm Eb Fm Eb …
Y: "[~@7 eb4@2 d4@3 ~@11 f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4@2 eb4 ~ eb4 ~ eb4@2 c3@3 ~ c3@2 ~@2 c3@4 f4 ~ f4 ~ f4@2 ~@2 f4@2 ~@2 f4@2 eb4 ~ eb4@2 g4 ~@7 eb4@8 ~@2 d4@4 f4@2 eb4@4 d4@3 ~ d4@6 eb4 ~@2 eb4@5 c4, ~@13 c4@72 ab3@12 ~@31, ~@83 f3@13 ~@32, ~@87 c4@40 ~]/4",
Z: "[~@11 [g3,eb4]@6 ~@2 [ab3,bb3,f4]@3 ~ f4@3 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4@2 eb4 ~ eb4 ~ eb4@10 ~@2 eb4 ~ eb4@2 f4 ~ f4@2 eb4 ~ eb4@2 f4 ~ f4 ~ eb4 ~ eb4@2 f4@2 g4@3 ~ g4@7 ~@2 eb4@2 f4 ~ g4@6 ~ eb4@7 ~ c4@9 c4@2 c4 ~@2 d4 ~@2 f4@5 [d4,f4]@3 ~ [d4,g4]@3 ~ [c4,f4]@4 eb4@2 c4@36 c4@2 c4@2 ~@2 d4 ~ [d4,f4]@4 ~@2 [d4,f4]@3 ~ [d4,bb4]@3 ~ [eb4,g4]@41 ~ eb4@4 f4, ~@3 c4@112 ~@12 c4@18 ~@46 c4@58 ~@7, ~@23 [ab3,bb3]@10 ~@98 d4@5 ~@120]/8", // Cm Bb7 Dm G5 F5 Dm Gm Eb …
AA: "[~@3 f4@2 ~@2 f4 ~ f4@4 g4@2 ~ g4 ~@2 g4@4 f4@2 eb4@4 bb3@2 f4@2 g4@2 ab4@4 g4@2 f4@4 eb4@4 ~@2 f4@6 eb4@2 d4@5]/2",
AB: "[~ c4 ~ b3@11 ~ eb4@2 ~@4 c4@19 ~@24, ~@17 d4@5 ~@42, ~@19 g3@21 ~@24]/2",
})).s("gm_piano").gain(0.64)
// chords · piano · soft notes
const piano_soft = note("<A B@2 ~@40 C D E F G ~ H@2 ~@5 I J ~@2 K ~@4 L ~@6 M ~@5>".pickRestart({
A: "~@7 g3@8 ~, ~@14 f3 ~@17",
B: "[~@12 g3@12 ~@8 eb4@29 ~@3, ~@3 b3@21 ~@2 f3@35 ~@3, ~@3 d4@18 ~@7 ab3@33 ~@3, ~@15 c4@16 ~]/2",
C: "~@19 ab3@2 ~@7 ab3@2 ~@2", D: "~@16 f3 ~@10 f3 ~@3 [f3,ab3]",
E: "~@3 ab3 ~@3 ab3@2 ~@2 f3 ~@4 ab3@2 ~@2 ab3@2 ~@2 ab3@2 ~@6, ~@7 f3 ~@12 f3 ~@3 f3 ~@7",
F: "~@11 ab3@3 ~@2 ab3@2 ~ eb4@2 ~@2 c4@4 ~@5", G: "~@4 c4@3 ~@25", H: "[~@25 eb4@11 ~@28, ~@21 ab3@19 ~@24]/2",
I: "~@18 eb4@3 ~@2 c4@4 ~@5", J: "~@4 g4 ~@2 f4 ~ g4@5 ~@3 eb4@3 ~@12, ~@7 c4@10 ~@15", K: "~@24 f4 ~@7",
L: "~@3 g4@4 ~@25", M: "~@7 eb4 ~@24",
})).s("gm_piano").gain(0.4)
// chords · synth strings 1
const synth_strings_1 = note("<~@11 A@5 B@2 C@3 D E@2 ~@7 F@7 G@2 H I J@8 ~ K L M@8 N@7 O@7 P@2 ~>".pickRestart({
A: "[~@20 f4@15 f4@16 eb4@32 f4@17 f4@11 ~@20 d4@6 d4@6 d4@2 ~@3 [c4,f4]@12, ~@111 g4@35 ~@14]/5", // F5
B: "[~@2 [d4,g4]@16 [c4,eb4]@32 ~ [c4,f4]@13]/2", // G5 Cm F5
C: "[~@2 [d4,g4]@16 c4@17 c4@6 c4@6 c4@2 ~@3 ab4@14 [d4,f4]@16 [eb4,g4]@14, ~@18 eb4@32 ~ eb4@15 ~@30]/3", // G5 Dm Eb
D: "~ [eb4,ab4]@10 ~ g4@6 [c4,f4]@14, ~@11 d4@6 ~@15", E: "[~@2 [d4,g4]@17 c4@16 c4@6 c4@5 ~@18, ~@19 eb4@27 ~@18]/2",
F: "[~@20 f4@16 f4@15 eb4@31 f4 f4@16 f4@11 ~@21 d4@6 d4@6 d4@2 ~@3 [c4,f4]@14 [d4,g4]@16 ~ [c4,eb4]@32 [c4,f4] [c4,f4]@12, ~@111 g4@36 ~@77]/7", // F5 G5 Cm F5
G: "[~@3 g4@16 c4@16 c4@6 c4@6 c4@2 ~@3 ab4@12, ~@2 d4@16 ~ eb4@31 ~ eb4@13]/2", H: "~@2 [d4,f4]@16 ~ [eb4,g4]@13",
I: "~@2 [eb4,ab4]@9 [d4,g4]@6 [c4,f4] [c4,f4]@14", J: "[~@2 [d4,g4]@10 c4@23 c4@6 c4@6 c4@2 ~@207, ~@3 eb4@61]/8",
K: "~@19 ab4@13", L: "~@2 f4@17 g4@12 ab4",
M: "[~@11 g4@7 ~@12 g4@12 ~@25 c4@6 c4@6 c4@2 ~@2 [c4,f4]@15 [d4,g4]@17 c4@31 [c4,f4]@16 [d4,g4]@16 c4@17 c4@6 c4@6 c4@2 ~@2 ab4@15 [d4,f4]@16 [eb4,g4]@14, ~@18 eb4@24 eb4@73 eb4@63 eb4@33 eb4@31 ~@14]/8", // F5 G5 F5 G5 Dm Eb
N: "[~@3 ab4@8 [d4,g4]@7 c4@7 c4@9 ~@17 [c4,f4]@14 ~ [d4,g4]@14 c4@32 [c4,f4]@20 [d4,g4]@15 c4@16 c4@6 c4@6 c4@2 ~@2 ab4@13 ~ [d4,f4]@18 [eb4,g4]@13, ~@3 eb4@77 eb4@67 eb4@32 eb4@32 ~@13, ~@9 f4@8 ~@95]/7", // G5 F5 G5 F5 G5 Dm Eb
O: "[~ ab4@9 ~ g4@7 c4@7 c4@8 ~@33 [d4,g4]@15 ~ c4@31 ~ c4@16 [d4,g4]@15 ~ c4@17 c4@6 c4@6 c4@2 ~@2 ab4@15 d4@15 ~ [eb4,g4]@14, ~ eb4@81 eb4@64 eb4@33 eb4@31 ~@14, ~@10 d4@7 ~ f4@33 c4@15 ~@158, ~@26 f4@31 f4@48 ~@7]/7", // G5 Eb
P: "[~@3 ab4@8 ~ [d4,g4]@6 c4@16 ~@17 c4@3 ~@10, ~@3 eb4@51 ~@10]/2", // G5
})).s("gm_synth_strings_1").gain(0.12).pan(0.9)
// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note("<~@11 A@5 ~@3 B ~@11 C@5 ~@3 B ~@11 D@2 E@3 ~@3 B ~@6 B ~@6 B ~@4>".pickRestart({
A: "[~@20 c4@15 d4@16 c4@32 c4@17 d4@11 d4@20 ~@14 d4 ~@14]/5", B: "~@17 c4 ~@14",
C: "[~@20 c4@16 d4@15 c4@31 c4 c4@16 d4@11 ~ d4@20 ~@14 d4 ~@14]/5", D: "[~@34 d4@17 eb4@13, ~@19 eb4@32 ~@13]/2",
E: "[~@11 d4@7 c4@12 d4@12 c4@25 ~@29, eb4@3 ~@13]/3",
})).s("gm_synth_strings_1").gain(0.07).pan(0.9)
// chords · lead 1 square
const lead_1_square = note("<~@16 A@3 B@8 ~@9 C D@2 E@8 ~@23 F@4 ~@4>".pickRestart({
A: "[~@27 eb4@2 ~@2 eb4@4 f4 ~@3 f4@2 eb4@3 ~ d4@4 c4@4 eb4@37 ~@2 eb4@3 ~]/3",
B: "[eb4@4 f4@2 ~ f4@2 eb4@4 d4@4 c4@4 eb4@235]/8", C: "~@27 eb4@2 ~@3",
D: "[eb4@3 f4 ~@3 f4@2 eb4@3 ~ d4@4 ~ c4@4 eb4@36 ~ eb4@3 ~@2]/2",
E: "[eb4@3 f4@3 ~ f4@2 eb4@4 d4@4 c4@4 ~@95 c4@19 ~@121, ~@21 eb4@235]/8",
F: "[~@27 [eb4,g4]@4 g4@3 ~ [f4,ab4]@3 ~@4 g4@3 ~ d4@3 [c4,eb4]@4 [eb4,g4]@38 [eb4,g4]@4 g4@2 ~@2 [f4,ab4]@3 ~ [f4,ab4]@2 g4@3 ~ [d4,f4]@3 ~@16, ~@31 eb4@8 f4@2 eb4@8 ~@4 c4@63 ~@12, ~@40 ab4@3 ~@2 f4@3 ~@47 eb4@10 eb4@11 ~@12]/4", // Eb Fm Cm Eb Fm Dm
})).s("gm_lead_1_square").gain(0.64)
// drums · kick
const kick = s("bd").struct(`<
~@2 A B C D E B C D C B F G H I J G J B J G J K I C D K ~ B C B F G H I J G L I J G J B C D C B C D C M F G N B J G J
O J G B J G P M J G B J G J M J Q K ~
>`.pickRestart({
A: "~@19 x ~@5 x ~@6", B: "~ x ~@7 x ~@7 x ~@2 x ~@4 x ~@6", C: "~@5 x ~ x ~@5 x ~@3 x ~ x ~@5 x ~@6",
D: "~@5 x ~ x ~@11 x ~@5 x ~@6", E: "~@5 x ~ x ~@5 x ~@3 x ~@2 x ~@4 x ~@6",
F: "~ x ~@3 x ~ x ~@5 x ~@3 x ~ x ~@5 x ~@6", G: "~@3 x ~@3 x ~@11 x ~@5 x ~@6",
H: "~ x ~@3 x ~ x ~@5 x ~@3 x ~ x ~@12", I: "~@9 x ~@7 x ~@2 x ~@4 x ~@6", J: "~@3 x ~@5 x ~@5 x ~@3 x ~@5 x ~@6",
K: "~ x ~@7 x ~@7 x ~@2 x ~@11", L: "~@4 x ~@4 x ~@5 x ~@4 x ~@4 x ~@6", M: "~ x ~@7 x ~@7 x ~ x ~@5 x ~@6",
N: "~ x ~@3 x ~ x ~@5 x ~@3 x ~@14", O: "~@9 x ~@7 x ~ x ~@5 x ~@6", P: "~@3 x ~@5 x ~@5 x ~@4 x ~@4 x ~@6",
Q: "~@4 x ~@2 x ~@11 x ~@5 x ~@6",
})).gain(0.5)
// drums · snare
const snare = s("sd").struct(`<
~@2 A B C@3 B C@3 B C@2 D B C@3 B C E C F G C@2 F ~ B C B C@2 D B C@3 H C@2 E B C@3 B C@3 B C@2 D B C@3 B C@2 B C@3 B
C@2 B C@3 B C@2 F ~
>`.pickRestart({
A: "~@27 x ~@4", B: "~@3 x ~@3 x ~@3 x ~@15 x ~@4", C: "~@11 x ~@15 x ~@4", D: "~@11 x ~@20", E: "~@12 x ~@14 x ~@4",
F: "~@3 x ~@3 x ~@3 x ~@20", G: "~@7 x ~@3 x ~@15 x ~@4", H: "~@3 x ~@7 x ~@15 x ~@4",
})).gain(0.45)
// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@2 ~@2 A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A ~@3 A ~@2 A ~@3 A
~@2 A ~
>`.pickRestart({
A: "~@5 x ~@10",
})).gain(0.28)
// drums · hihat
const hihat = s("hh").struct(`<
~@2 A B C D E B C@3 B C@2 F B C@3 B C G C H B C@2 H ~ B I B C@2 J B C E C B C@2 G B K D L B C D C M C@2 N B C@3 O C G
B C@2 P O C@2 B C@3 O C@2 H ~
>`.pickRestart({
A: "~@19 x ~@7 x ~@4", B: "~@11 x ~@8 x ~@6 x ~@4", C: "~@3 x ~@7 x ~@7 x ~@7 x ~@4",
D: "~@3 x ~@7 x!2 ~@6 x ~@7 x ~@4", E: "~@3 x ~@7 x ~@8 x ~@6 x ~@4", F: "~@3 x ~@7 x ~@7 x ~@12",
G: "~@3 x ~@8 x ~@6 x ~@7 x ~@4", H: "~@11 x ~@8 x ~@11", I: "~@3 x!2 ~@6 x ~@7 x ~@7 x ~@4",
J: "~@4 x ~@6 x ~@7 x ~@12", K: "~@3 x ~@7 x ~@7 x ~@7 x!2 ~@3", L: "~@3 x ~@7 x!2 ~@6 x!2 ~@6 x ~@4",
M: "~@11 x ~@7 x ~@7 x ~@4", N: "~@3 x ~@7 x ~@20", O: "~@11 x ~@7 x!2 ~@6 x ~@4", P: "~@3 x ~@7 x ~@7 x!2 ~@6 x ~@4",
})).gain(0.28)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
~@2 A B C@2 D B C@2 D E ~@3 B C@2 D B C@2 D E F C D E ~ B D E ~@3 B C@3 G C@3 B C@2 D B C@2 D E ~@3 B C@3 B C D B C@2
D B C D B C@3 B C D E ~
>`.pickRestart({
A: "~@23 x ~@8", B: "~@3 x ~@19 x ~@7 x", C: "~@7 x ~@7 x ~@7 x ~@7 x", D: "~@7 x ~@7 x ~@7 x ~@8", E: "~@3 x ~@28",
F: "~@23 x ~@7 x", G: "~@3 x ~@3 x ~@15 x ~@7 x",
})).gain(0.17)
// drums · low tom
const low_tom = s("lt").struct("<~@39 [~@7 x ~@24] ~@38>").gain(0.5)
// drums · mid tom
const mid_tom = s("mt").struct(`<
~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@2 ~@2 A ~ A ~ A ~@3 A ~@3 B ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A ~@3 A ~@2 A ~@3 A
~@2 A ~
>`.pickRestart({
A: "~@13 x ~ x ~@16", B: "~@5 x ~@7 x ~ x ~@16",
})).gain(0.5)
// drums · crash
const crash = s("cr").struct(`<
~@2 A B ~@2 A B ~@2 A B ~@3 B ~@3 B ~@2 A B@2 ~ A C ~ B A C ~@3 B ~@3 B ~@3 D ~@3 B ~@3 B ~@3 B ~@3 B ~ A B ~@2 A B ~
A B ~@3 B ~ A B ~
// … 70 more lines
More by Britney Spears
... Baby One More TimeC minor · 93 bpm(You Drive Me) CrazyE♭ major · 100 bpmLuckyA minor · 100 bpmSometimesG major · 98 bpmDon't Go Knockin' on My DoorB♭ minor · 112 bpmDon't Let Me Be The Last To KnowE major · 120 bpmFrom the Bottom of My Broken HeartG major · 76 bpmI Love Rock 'n' RollE major · 94 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.