0:00/0:00
// (You Drive Me) Crazy — Britney Spears
// 100 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 14 "Staff-4" acoustic guitar steel (copy of ch 12 "Staff-2" distortion guitar); ch 14 "Staff-4" music box (copy of ch 12 "Staff-2" epiano2); ch 15 "Staff-5" electric guitar jazz (copy of ch 13 "Staff-3" piano)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · glockenspiel · "Staff-1"
const glockenspiel = note("<~@61 [~@4 b4@2 b4@2 db5@3 ~ b4@2 ~@2] [~ bb4 bb4@13 ~] ~@22>")
.s("gm_glockenspiel").gain(0.56)
// chords · distortion guitar · "Staff-2"
const distortion_guitar = note(`<
~@3 A B A B A B A B A B A B A B A B A B A B A B A B A C D E F G F G A B A B A B A B A B A B A B A B A C D H ~@8 A B A
I A B A B A C D J A B A B A C D H K L
>`.pickRestart({
A: "[c4,eb4,g4]@3 [c4,eb4,g4]@3 [c4,eb4,ab4]@9 ~", B: "[b3,d4,g4]@3 [b3,d4,g4]@3 [c4,eb4,g4]@9 ~",
C: "[d4,f4,bb4]@3 ab4@3 [bb3,eb4,g4]@3 f4 eb4@2 [bb3,f4]@3 ~", D: "[c4,eb4,g4] ab4 g4 [c4,eb4,ab4] g4 f4 eb4 c4",
E: "[g3,b3]@3 [g3,b3,d4]@3 [e3,g3,c4]@9 ~", F: "[c4,eb4,g4]@3 [c4,eb4,g4]@3 [c4,eb4,ab4]@4 ~@6",
G: "[b3,d4,g4]@3 [b3,d4,g4]@3 [c4,eb4,g4]@4 ~@6", H: "[g3,b3]@3 [g3,b3,d4]@3 [eb3,g3,c4]@9 ~",
I: "[b3,d4,g4]@3 [b3,d4,g4]@3 [c4,eb4,g4]@4 c4@2 eb4@2 g4@2", // G Cm
J: "[g3,b3]@3 [g3,b3,d4]@3 [eb3,g3,c4]@4 c4@2 eb4@2 f4@2", K: "g4 ab4 g4 ab4 [ab3,c4,g4] f4 eb4 c4, [c4,eb4]@7 ~@9",
L: "[g3,b3]@3 [g3,b3,d4]@3 [eb3,g3,c4]@4 ~@6", // G Cm
})).s("gm_distortion_guitar").gain(0.48)
// chords · epiano2 · "Staff-2"
const epiano2 = note("<~@55 A B C D E F G@2 ~@22>".pickRestart({
A: "[eb4,g4,bb4]@5 ~ [eb4,g4,bb4]@7 ~ f4@2", B: "[bb3,eb4,f4]@3 g4@3 [g3,bb3,eb4]@9 ~",
C: "[eb4,g4]@2 bb4@2 bb4@2 bb4@2 [eb4,g4,bb4]@2 eb4@3 ~ eb4@2", D: "[bb3,eb4,f4]@3 g4@3 [bb3,eb4,g4]@3 f4 eb4@2 ~@4",
E: "[c4,eb4,gb4,bb4]@5 ~ [c4,eb4,gb4,bb4]@5 ~ gb4@2 gb4@2", F: "[f4,ab4,db5]@3 b4@3 [db4,gb4,bb4]@3 ab4 gb4@5 ~",
G: "[[b3,eb4,gb4]@3 ~ b4@2 b4@2 [eb4,gb4,db5]@3 ~ b4@2 ~@3 bb4 ~@6 [d4,ab4]@7 ~, ~@14 [eb4,ab4]@9 ~@9, ~@18 bb4@13 ~]/2", // B Ebm7 Ddim Ab5
})).s("gm_epiano2").gain(0.48)
// other · piano · "Staff-3"
const piano = note(`<
~@3 A B A B C D C D C D C D C D C D C D C D C D C D C E F D ~@4 C D C D C D C D C D C D C D C D C E F G H I H I J K L
M A B A N A O A O P E Q D A O A O P E Q D R S
>`.pickRestart({
A: "c3@2 c3@2 c3@2 g2@2 ab2@2 ab2@5 ~", B: "g2!3 b2 c3 c3@2 g2", C: "c3@3 ~ c3@2 g2@2 ab2@2 ab2@5 ~",
D: "g2@3 ~ g2@2 b2@2 c3@2 c3@5 ~", E: "bb2@5 ~ d2@2 eb2@2 eb2@2 d2@3 ~", F: "d2@3 ~ d2@2 g2@2 ab2@2 ab2@3 ~ ab2@2",
G: "g2@3 ~ g2@2 b2@2 c3@2 c3@3 ~ d2@2", H: "eb2@7 ~ eb2@7 ~", I: "eb2@5 ~ eb2@2 eb2@3 ~ bb2@3 ~",
J: "b2@5 ~ b2@2 b2@7 ~", K: "bb2@5 ~ bb2@2 eb2@7 ~", L: "b2@5 ~ b2@2 b2@5 ~ b2@2", M: "bb2@15 ~",
N: "g2@2 g2@2 g2@2 b2@2 c3@2 c3@3 ~ g2@2", O: "g2@3 ~ b2@2 c3@4 c3@3 ~ g2@2",
P: "c3@2 c3@2 c3@2 g2@2 ab2@2 ab2@3 ~ ab2@2", Q: "c2@3 ~ c2@2 g2@2 ab2@2 ab2@3 ~ ab2@2", R: "ab2@7 ~ f2@7 ~",
S: "g2@5 ~ c3@4 ~@6",
})).s("gm_piano").gain(0.4)
// drums · kick
const kick = s("bd").struct(`<
[~@15 x]
[~@5 x ~@2 x!2 ~ x ~@2 x ~]
[x ~@5 x ~@2 x!3 ~@2 x ~]!53
~@8
[x ~@5 x ~@2 x!3 ~@2 x ~]!20
~@2
>`).gain(0.48)
// drums · clap
const clap = s("cp").struct("<~ [~@3 x ~@8 x ~@3] [~ x ~ x]!53 ~@8 [~ x ~ x]!20 ~@2>").gain(0.48)
// drums · hihat
const hihat = s("hh").struct(`<
~
[x ~ x!6 ~ x ~ x ~ x!3]
[~ x ~ x!6 ~ x!2 ~ x!3]!53
~@8
[~ x ~ x!6 ~ x!2 ~ x!3]!20
~@2
>`).gain(0.48)
// drums · open hat
const open_hat = s("oh").struct(`<
[~@15 x]
[~ x ~@6 x ~@3 x ~@3]
[x ~ x ~@6 x ~@2 x ~@3]!53
~@8
[x ~ x ~@6 x ~@2 x ~@3]!20
~@2
>`).gain(0.48)
// drums · tambourine
const tambourine = s("tb").struct("<[~@15 x] [x!4 ~ x!5 ~@2 x!4] [x!5 ~ x!5 ~ x!4]!53 ~@8 [x!5 ~ x!5 ~ x!4]!20 ~@2>")
.gain(0.48)
// drums · cowbell
const cowbell = s("cb").struct(`<
[~@15 x]
[~ x ~ x ~@2 x ~ x!2 ~ x!2 ~ x ~]
[x ~ x ~ x ~@2 x ~ x!4 ~ x ~]!53
~@8
[x ~ x ~ x ~@2 x ~ x!4 ~ x ~]!20
~@2
>`).gain(0.48)
stack(glockenspiel, distortion_guitar, epiano2, piano, kick, clap, hihat, open_hat, tambourine, cowbell)
More by Britney Spears
... Baby One More TimeC minor · 93 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 bpmOops!... I Did It AgainC♯ minor · 95 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.