BPM (slag per minutt) er hjertet i et spor. Bom med ett slag og en remix låser ikke; bom med en oktav og DJ-settet ditt faller fra hverandre. Denne detektoren bruker autokorrelasjon av onset-envelope med oktavfeil-korreksjon for å lese tempoet i en hvilken som helst lydfil i nettleseren din. Slipp en fil, få et tall — typisk innenfor ±2 BPM av faktisk verdi på rytmisk materiale.
Hva BPM-deteksjon faktisk måler
BPM-deteksjon finner periodisiteten i et signals energi-envelope. Den klassiske tilnærmingen: regn ut RMS i et kort vindu, ta den halvbølge-rektifiserte differensialen for å få et onset-signal, og autokorreler så for å finne den mest sannsynlige slagperioden. Kanttilfeller inkluderer tempoer som ikke ligger på heltallsgrenser i frame (174 BPM er beryktet vanskelig), låter med kraftig betoning på halv takt som lurer detektoren til å rapportere halvtempo, og låter uten klart rytmisk innhold. Vi demper det vanlige oktavfeil-tilfellet ved å sjekke om det doblede tempoet også har en sterk autokorrelasjonstopp — i så fall foretrekker vi den raskere avlesningen, fordi det opplevde tempoet vanligvis ligger i området 100-180 BPM.
Slik fungerer denne detektoren
Lyden dekodes av Web Audio API og mikses til mono. Vi regner ut en RMS-envelope ved 100 Hz framerate (10 ms hopp, 20 ms vindu) og halvbølge-rektifiserer så førstedifferensen for å isolere onsets. Autokorrelasjonen går over forsinkelser som tilsvarer 60-200 BPM. Etter at vi har valgt sterkeste topp, gjør vi en oktavkorreksjon i ettertid: hvis halv-forsinkelsen (= doblet tempo) har en topp på minst 45 % av den valgte, bytter vi til den raskere avlesningen. Parabolsk interpolasjon rundt valgt topp gir BPM-presisjon under én frame. Alt kjører i nettleser-TypeScript over Float32Array — ingen eksterne biblioteker, ingen server.
Når du bruker dette verktøyet
- Beatmatching for DJ-sett og live-opptredener
- Låse remixer og stems til tempoet i et referansespor
- Sette prosjektets tempo i DAW-en før du importerer en innspilt take
- Sjekke trommesample og loops for å være sikker på at de er riktig merket
- Rask rytmesjekk på en låt du ikke umiddelbart klarer å tappe takten til
Vanlige spørsmål
- Hvor nøyaktig er deteksjonen?
- På rytmisk klart materiale (det meste av pop, dance, hiphop, rock med trommer), regn med ±2 BPM. På materiale med svak eller fraværende perkusjon (orkestralt, ambient, akustiske ballader) har algoritmen mindre å låse på, og kan rapportere halv- eller dobbelttempo. Tilliten rapporteres ved siden av BPM — en lav skår betyr at resultatet bør tas med en klype salt.
- Hvorfor rapporterer den noen ganger halvparten av forventet BPM?
- BPM-deteksjon er et iboende tvetydig problem når det finnes periodisitet på flere harmonisk relaterte hastigheter. Vi oppdager dette tilfellet og foretrekker den raskere avlesningen, men på svært trege låter (60-80 BPM) med sterk underdeling kan detektoren likevel velge det doblede tempoet. Sammenlign med din egen tap-tempo-avlesning hvis det ikke føles riktig.
- Takler den låter med variabelt tempo?
- Ikke godt. Den integrerte avlesningen gjenspeiler gjennomsnittstempoet over hele sporet. For låter med tempobytter seksjon for seksjon er en beat-tracking-algoritme med utdata per frame riktig verktøy — men det er mye tyngre og dårlig egnet til en gratis nettleserbasert tjeneste.
- Hva om sporet mitt ikke har trommer?
- Akustisk / ambient / ikke-perkussivt materiale er det vanskeligste tilfellet. Onset-envelopen plukker opp tonale noteanslag, men de er mye svakere enn trommeslag. Tilliten blir lav og resultatet upålitelig. I slike tilfeller kan det være bedre å skrive inn BPM for hånd ut fra komponistens intensjon.
Personvern
Filen din analyseres fullstendig i denne nettleserfanen — dekodet av Web Audio API, behandlet av nettleser-TypeScript, aldri lastet opp. Lukker du fanen, slettes all arbeidsstatus.