0:00/0:00
// Before the Goodbye — Britney Spears
// 125 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 16 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/4)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · lead 2 sawtooth
const lead_2_sawtooth = note("<A B C D E F@3 G@5 H@2 ~>".pickRestart({
A: "~@8 b5@7 a5@7 ~ g5@7 ~@2", B: "~@6 b5@7 a5@7 ~ g5@7 ~@4", C: "~@4 b5@7 ~ a5@7 g5@7 ~@6",
D: "~@6 g5@4 a5@7 b5@2 ~@2 b5@7 ~ g5@3", E: "~@4 g5@19 ~@9",
F: "[~@3 d5@2 ~ d5@4 e5@4 ~@4 f#5@4 d5@48 ~ b4@7 ~@12 b5@6]/3",
G: "[~ a5@7 ~ g5@7 ~@8 b5@7 a5@7 ~ g5@7 ~@8 b5@7 ~ a5@7 g5@7 ~@12 g5@4 a5@7 b5@2 ~@2 b5@7 ~ g5@4 ~@3 g5@19 ~@12 d5@2 ~ d5@4 e5@4]/5",
H: "[~@4 f#5@3 d5@48 ~@2 b4@7]/2",
})).s("gm_lead_2_sawtooth").gain(0.12)
// bass · fretless bass
const bass = note("<A@3 B C@2 D@4 E F@2 G@2 H>".pickRestart({
A: "[e2@7 ~ e3@3 e2@7 ~ e3@4 e2@3 e3@4 e2@7 ~ e3@4 e2@7 e3@4 e2@4 e3@4 c2@7 c3@4 c2@7 c3@4 c2@4 c3@4 c2@5]/3",
B: "~@2 c3@4 c2@7 ~ c3@3 c2@4 c3@4 g1@7",
C: "[~ g2@3 g1@7 ~ g2@4 g1@3 g2@4 g1@7 ~ g2@4 g1@7 g2@4 g1@4 g2@4 f#1@7 f#2@3]/2",
D: "[~ f#1@7 f#2@4 f#1@4 f#2@4 f#1@7 f#2@4 f#1@7 ~ f#2@3 f#1@4 f#2@4 e2@7 ~ e3@3 e2@7 ~ e3@4 e2@3 e3@4 e2@7 ~ e3@4 e2@7 e3@4 e2@4 e3@3 c2@7 ~ c3@4 c2@6]/4",
E: "~ c3@4 c2@4 c3@4 c2@7 c3@4 c2@7 ~",
F: "[c3@3 c2@4 c3@4 g1@7 ~ g2@3 g1@7 ~ g2@4 g1@3 g2@4 g1@7 ~ g2@4 g1@7 g2@4]/2",
G: "[g1@4 g2@3 f#1@7 ~ f#2@4 f#1@7 f#2@4 f#1@4 f#2@4 f#1@7 f#2@4 f#1@7 ~ f#2@3 f#1@4]/2", H: "f#2 ~@7",
})).s("gm_fretless_bass").gain(0.5)
// drums · kick
const kick = s("bd").struct("<A B C D E F G H I J K L M N O ~>".pickRestart({
A: "x ~@5 x ~@4 x ~@18 x ~", B: "~@6 x ~@22 x ~@2", C: "~@2 x ~@5 x ~@18 x ~@3 x", D: "~@2 x ~@22 x ~@5 x",
E: "~@4 x ~@18 x ~@7 x", F: "~@22 x ~@4 x ~@4", G: "~ x ~@18 x ~@2 x ~@3 x ~@4", H: "~@18 x ~@5 x ~@4 x ~@2",
I: "~@2 x!2", J: "~@7 x ~@2 x ~@2 x ~@2", K: "~@13 x ~@2 x ~@3 x ~@11", L: "~@11 x ~@5 x ~@4 x ~@9",
M: "~@9 x ~@7 x ~@14", N: "~@7 x ~@5 x ~@5 x ~@12", O: "~@6 x ~@2 x ~@3 x ~@3 x ~@14",
})).gain(0.48)
// drums · snare
const snare = s("sd").struct("<A B C D E F G H I J K L M N O ~>".pickRestart({
A: "~@15 x ~@16", B: "~@13 x ~@18", C: "~@3 x ~@4", D: "~@10 x ~@6 x ~@14", E: "~ x ~@2", F: "~@3 x ~@12",
G: "~@5 x ~@26", H: "~@3 x ~@4 x ~@23", I: "~ x ~@29 x", J: "~@15 x", K: "~@7 x", L: "~@3 x ~@22 x ~@5", M: "~@3 x",
N: "~@23 x ~@8", O: "~@21 x ~@5 x ~@4",
})).gain(0.48)
// drums · hihat
const hihat = s("hh").struct("<A B C D E F G H I J K L M N O P>".pickRestart({
A: "x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~", B: "~@2 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
C: "x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x", D: "~@2 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@2",
E: "~ x ~@2 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x", F: "~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@2",
G: "~ x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x", H: "~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@2",
I: "~ x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x", J: "~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~",
K: "~ x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3", L: "x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~",
M: "~@2 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3", N: "x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~",
O: "~@2 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3", P: "x",
})).gain(0.48)
// drums · splash
const splash = s("cr").struct("<x ~@6 [~@9 x ~@6] ~@8>").gain(0.48)
// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<~@7 [~@11 x!7 ~@14] ~@6 [~@31 x] [x!4 ~@28]>").gain(0.35)
// drums · woodblocks · soft notes
const woodblocks_soft = s("woodblock:4").struct("<~@7 [~@5 x ~@10] ~@6 [~@28 x!3 ~] ~>").gain(0.23)
stack(lead_2_sawtooth, bass, kick, snare, hihat, splash, woodblocks, woodblocks_soft)
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.